Unityのエディタ拡張で、違う値を持つプロパティのInspectorを複数選択表示した際の挙動を実装する方法です。
Unity2019.1.0
やりたいこと
Unityで複数のアセットを一度に選択すると、同じプロパティは同時に編集することができます。
このときこれらのプロパティが違う値を持っていると、「-」という表示になります。
この記事ではこれをエディタ拡張で実装する方法を紹介します。
EditorGUI.showMixedValue
この表示を行う方法は簡単で、EditorGUI.showMixedValue
をtrueにするだけです。
ソースコードは以下のようになります。
EditorGUI.showMixedValue = true; EditorGUILayout.Toggle("Example", false); EditorGUI.showMixedValue = false;
実際には複数のプロパティが違う値を持っている時のみこの「-」表示にする必要があります。
これは以下のように、SerializedProperty.hasMultipleDifferentValues
やMaterialProperty.hasMixedValue
を使って実装します。
// SerializedPropertyの場合 SerializedProperty serializedProperty; EditorGUI.showMixedValue = serializedProperty.hasMultipleDifferentValues; // MaterialPropertyの場合 MaterialProperty materialProperty; EditorGUI.showMixedValue = materialProperty.hasMixedValue;
結果
実際にこれをプロパティに適用した結果は以下の通りとなります。