【Unity】EditorWindowのメニューバーを作る
Editor拡張の小ネタ記事など。。
EditorWindowによくあるメニューバーってどうやって作るんだろう?
自分のEditorWindowにこのようなメニューバー作りたかったんですが、作り方もわからないし、ググり方もわからなかったのでUnityAnswerで質問してしまいました(^O^) 大分前のことなんですが、親切な回答を頂けたので共有します。
answers.unity.com
EditorStyles
UnityのEditorGUIに使用されているGUIStyle、EditorStylesを使用することで作ることができます。
// メニューバー部分の適当なスクリプト EditorGUILayout.BeginHorizontal( EditorStyles.toolbar, GUILayout.ExpandWidth( true ) ); { GUILayout.Button( "button", EditorStyles.toolbarButton, GUILayout.Width( 70 ) ); GUILayout.Toggle( toggle, "toggle", EditorStyles.toolbarButton, GUILayout.Width( 70 ) ); EditorGUILayout.IntPopup( 0, new string[] { "popup" }, new int[] { 0 }, EditorStyles.toolbarPopup, GUILayout.Width( 70 ) ); EditorGUILayout.IntPopup( 0, new string[] { "dropdown" }, new int[] { 0 }, EditorStyles.toolbarDropDown, GUILayout.Width( 70 ) ); EditorGUILayout.TextField( "", EditorStyles.toolbarTextField, GUILayout.Width( 150 ) ); } EditorGUILayout.EndHorizontal();
HorizontalScopeにEditorStyles.toolbarを適用することで、そのエリアをメニューバーのようなルックスにしてくれます。オプションにGUILayout.ExpandWidth( true )を指定すると端から端までバーを確実に表示できてGoodです。
HorizontalScopeの中身に、ButtonやらToggleやらPopupやら自分のほしい要素にEditorStyles.toolbarButtonやEditorStyles.toolbarPopupなどを適用することで各要素をメニューバーの要素のように表示できました。
特別なクラスがあるかと思っていたので、GUIStyleのみで実現できると知って感動でした。。。これを知ってからはEditorStylesを頻繁に使用しています。
自作EditorWindowがよりイケてる感じになるのでお試しください。
- EditorStyles.toolbar
- EditorStyles.toolbarButton
- EditorStyles.toolbarPopup
- EditorStyles.toolbarDropDown
- EditorStyles.toolbarTextField