タイトルバー…インスペクタにあるこういうやつ
を追加したいときは、InspectorTitlebarを使います。
EditorGUILayoutSample obj = target as EditorGUILayoutSample; obj.folderValue = EditorGUILayout.InspectorTitlebar (obj.folderValue, obj); if (obj.folderValue) { obj.name = EditorGUILayout.TextField ("name", obj.name); obj.address = EditorGUILayout.TextArea (obj.address, GUILayout.Height (50)); }
とすると、
こんな感じに。
InspectorTitlebarの戻り値がtrueのときは、このフォルダが開いているということで、
追加で表示するフィールドを設定します。
この第二引数に渡すのはUnityEngine.Objectを継承しているオブジェクト。
これによってUnityのほうで自動的に適切な描画をしてくれるようです。
そのためのものなので、それによって特に値が変更されたりはしないよう。
試しにtransformを渡すと、
obj.folderValue = EditorGUILayout.InspectorTitlebar (obj.folderValue, obj.transform);
こんな感じに。
使い方としては、InspectorTitlebarに渡したオブジェクトに関連する変更を、その下のフィールドでするという感じなんでしょうね。もちろん。
ちなみに第二引数はObjectの配列の場合もあるようなので、試してみたのですが、
obj.folderValue = EditorGUILayout.InspectorTitlebar (obj.folderValue, new UnityEngine.Object[]{obj, obj.transform});
こう表示が変わるだけで、どう使うのか今ひとつわかりませんでしたね…
調べてもわからないのでとりあえずそっとしておく感じにする。