先日行われたUnity SYNCの中で【『ヘブンバーンズレッド』の大規模開発と高速イテレーションを支える、自作ツール群の秘密】の公演でオリジナルのショートカットウィンドウを作成して使用しているという話があり、便利そうなので試作してみました。
ソースコード
今回ウィンドウの作成はIMGUI、各機能の呼び出しはEditorApplication.ExecuteMenuItemを利用しました。
それぞれの解説は様々なところでされているので今回は省略します。
とりあえずエディターの再生およびProject Settings、Build Settingsを開けるようにしてみます。
using UnityEngine;
using UnityEditor;
public class ShortcutWindow : EditorWindow
{
[MenuItem("Window/Shortcut")]
static void Init()
{
ShortcutWindow window = (ShortcutWindow)EditorWindow.GetWindow<ShortcutWindow>("ショートカット");
window.Show();
}
void OnGUI()
{
if( GUI.Button ( new Rect( 0.0f, 20.0f, 300.0f, 20.0f), "Play") ){
EditorApplication.ExecuteMenuItem("Edit/Play");
}
if( GUI.Button ( new Rect( 0.0f, 60.0f, 300.0f, 20.0f), "Project Settings") ){
EditorApplication.ExecuteMenuItem("Edit/Project Settings...");
}
if( GUI.Button ( new Rect( 0.0f, 100.0f, 300.0f, 20.0f), "Build Settings") ){
EditorApplication.ExecuteMenuItem("File/Build Settings...");
}
}
}
Window→Shortcutを押すと、「ショートカット」ウィンドウが表示されます。
また、それぞれのボタンを押すことでエディターが再生されたりウィンドウが開いたりします。
また、ゲーム開発などで頻繁に使うプロジェクト専用のデバッグ機能をショートカットウィンドウに登録しておくのも良いかもしれません。
適当なデバッグ機能もどきを追加してボタンを押すたびにフラグを反転させるようにしてみます。
using UnityEngine;
public static class DebugInfo
{
public static bool m_enable = false;
}
public class DebugTest : MonoBehaviour
{
void Update()
{
if(DebugInfo.m_enable)
{
Debug.Log("有効");
}
else{
Debug.Log("無効");
}
}
}
void OnGUI()
{
if( GUI.Button ( new Rect( 0.0f, 140.0f, 300.0f, 20.0f), "Debug Test") ){
DebugInfo.m_enable = !DebugInfo.m_enable;
}
}
ボタンを押すたびにConsoleの表示が切り替わっているかと思います。
まとめ
今回はUnity SYNCの公演を基に自分なりのショートカットウィンドウを作ってみました。
ウィンドウの作成にIMGUIを使いましたが、UIElementsを使えばより細かく設定できるのでそちらで作ってみるのも良いかもしれませんね。