例えば Unity の Console には下図のようにヘッダー領域があり、そこにボタンやトグルなどを表示している
今回はその表示方法について記述する
※内部的にはツールバー (toolbar) と呼ばれている
Header
ヘッダーを描画するのは至極簡単で EditorGUILayout.HorizontalScope
と EditorStyles.toolbar
を利用すればよい
using UnityEditor; using UnityEngine; public class HeaderWindow : EditorWindow { private void OnGUI() { using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar)) { GUILayout.FlexibleSpace(); } // Body Code } }
Unity で定義されている ヘッダー利用できるStyleには以下のものがある
- EditorStyles.toolbarPopup
- EditorStyles.toolbarButton
- EditorStyles.toolbarDropDown
- EditorStyles.toolbarTextField
- (EditorStyles.toolbarSearchField)
toolbarSearchField
に関しては基本的には利用することが無いので、これが利用されている SarchField
について後で記述する
EditorStyles.toolbarPopup
EditorGUILayout.Popup("Popup", 0, new[] {"0", "1"}, EditorStyles.toolbarPopup);
EditorStyles.toolbarButton
if (GUILayout.Button("Button1", EditorStyles.toolbarButton))
EditorStyles.toolbarDropDown
if (EditorGUILayout.DropdownButton(new GUIContent("Dropdown"), FocusType.Passive, EditorStyles.toolbarDropDown))
EditorStyles.toolbarTextField
EditorGUILayout.TextField("Text", EditorStyles.toolbarTextField);
SarchField
SearchField
は下図のような検索窓です
Ctrl + A で全選択できたり、文字が入力してあれば ✗ ボタンが表示され全削除できたりします
downOrUpArrowKeyPressed
というコールバックも用意されており SearchField
にフォーカスを当てた状態で上下キーを有効にできます
using UnityEditor; using UnityEditor.IMGUI.Controls; using UnityEngine; public class SearchFieldWindow : EditorWindow { private SearchField _searchField; private string _searchText; private void OnEnable() { if (_searchField == null) { _searchField = new SearchField(); _searchField.downOrUpArrowKeyPressed += SearchFieldOnDownOrUpArrowKeyPressed; } } private void SearchFieldOnDownOrUpArrowKeyPressed() { Debug.Log("Put Key"); } private void OnGUI() { using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar)) { _searchText = _searchField.OnToolbarGUI(_searchText); GUILayout.FlexibleSpace(); } } }
参考サイト
UnityEditor.EditorStyles - Unity スクリプトリファレンス
Unity - Scripting API: SearchField