エディタカスタマイズで押せないボタンを描く
もっとちゃんとした関数がありました。下記に記事を追加。
http://d.hatena.ne.jp/tiri_tomato/20140318/1395104788こちらの古い記事は、EditorGUI名前空間が使えない状況では一応使えるかな、ということで残しておきます。
淡色モードが案外サポートされてないので、勝手に作れって事でしょうか。
// 淡色表示用のスタイルを返す public static GUIStyle DimmedStyle(GUIStyle src) { GUIStyle dimmed = new GUIStyle(src); GUIStyleState[] styleStates = new GUIStyleState[] { dimmed.normal, dimmed.active, dimmed.focused, dimmed.hover, dimmed.onActive, dimmed.onFocused, dimmed.onHover, dimmed.onNormal }; foreach (GUIStyleState state in styleStates) { if (state != null) { Color color = state.textColor; if (float.Epsilon <= color.a) { color.a *= 0.25f; state.textColor = color; } } } return dimmed; }
これでEditorStyles.miniButtonとDimmedStyle(EditorStyles.miniButton)を描いてみるとこんな感じ。淡色ボタンの方は押せる必要は無いのでラベルとしてレンダリング。
EditorGUILayout.BeginHorizontal(); GUILayout.Button("miniButton", EditorStyles.miniButton); GUILayout.Label("dimmedButton", DimmedStyle(EditorStyles.miniButton)); EditorGUILayout.EndHorizontal();
エディタ用のGUIって「驚き最小の原則」があるので、プログラマの実装に任せるのでは無く、出来れば画一的なメソッドとかUnity側にあればうれしいんですが。