この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
Unityのエディタ拡張で自分で作った最高のウィンドウを使いたい話です。
最高のUnity生活を送っていますか?
自分が書いた記事ではないのですが、
【Unity】メニュー項目を増やして君だけの最強のUnityを作ろう!
この記事を読んでしばらくたったことですし、そろそろUnityにより複雑なことをやらせたくなってきた頃ではないでしょうか。
そう…GUIウィンドウを開いてもう少し細かいことをやらせてみたいですね!しましょう。
ということで簡単なチェックボックスとボタンのあるウィンドウを出してみたいと思います。
自分でウィンドウを作ってみよう
ざっくり必要なことは以下のとおりです。
EditorWindow
を継承したクラスを作る- 追加したMenuItemで呼び出される関数ではウィンドウを出す処理を書く
- OnGUIという関数内でウィンドウができたときのレイアウトをつくる
EditorWindow
を継承したクラスを作る
EditorWindow はカスタムしたエディタウィンドウを作るとき親にするクラスです。
https://docs.unity3d.com/jp/540/ScriptReference/EditorWindow.html
継承しましょう!
using UnityEditor;
public class MyCustomEditorWindow : EditorWindow {
}
継承しました。
追加したMenuItemでウィンドウを出す
using UnityEditor;
public class MyCustomEditorWindow : EditorWindow {
[MenuItem("Edit/OpebMyCustomEditorWindow")]
public static void Open() {
GetWindow<MyCustomEditorWindow>(true);
}
}
MenuItemへの追加の仕方は別の型が書いた記事を参考にしていただくとして、
これでメニューのEdit以下に Open MyCustomEditorWindow
という項目が追加され、Openという関数が呼び出されるようになります。
Openの中では
解説が少しややこしいですが、GetWindow
でウィンドウが出せます。
一つ目の引数をtrueにすると、今作っているウィンドウが別のウィンドウで出てくるようになります。
さて、ここまでできれば今作っている画面が出るようになっているはずです(まだ中身のない空のウィンドウですが)。
OnGUIを定義してウィンドウのレイアウトをつくる
このエディタにGUI要素を配置していきます。
チェックボックスを置くのは簡単で、UnityEditor GUILayoutのToggleを使います。
以下の例ではcheckBoxIsOn という変数にToggleのオンオフが入っています。
using UnityEditor
public class MyCustomEditorWindow : EditorWindow {
// ...
bool checkboxIsOn = true;
public void OnGUI(){
checkboxIsOn = GUILayout.Toggle(checkboxIsOn, "チェックボックスです");
}
}
最後にボタンを置いてみましょう。
using UnityEditor
public class MyCustomEditorWindow : EditorWindow {
// ...
public void OnGUI(){
checkboxIsOn = GUILayout.Toggle(checkboxIsOn, "チェックボックスです");
if (GUILayout.Button("ボタンの文字")) {
// ボタンを押したときに呼び出される処理
Debug.Log(checkboxIsOn);
}
}
}
これで押すとToggleの状態を出してくれるようになりました。
まとめ
GUILayoutには他にも様々なGUI要素があり、項目もさらに増やすことができます。
ぜひ試してみて最高のUnity生活を送ってください!