I want to show some properties in an inspector only if I select a specific enum index, so if I don’t select that enum index these properties will be hidden.
I found a script in internet and edited in this way:
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Trigger_DoorState)), CanEditMultipleObjects]
public class TriggerScriptsEditor : Editor {
public SerializedProperty
TriggerInteraction_prop,
itemTrigger_prop,
useItemArea_prop,
switchObject_prop;
void OnEnable () {
TriggerInteraction_prop = serializedObject.FindProperty ("type");
itemTrigger_prop = serializedObject.FindProperty ("pickUpItem");
useItemArea_prop = serializedObject.FindProperty("useItem");
switchObject_prop = serializedObject.FindProperty ("switch");
}
public override void OnInspectorGUI() {
serializedObject.Update ();
EditorGUILayout.PropertyField(TriggerInteraction_prop);
Trigger_DoorState.InteractionType st = (Trigger_DoorState.InteractionType)TriggerInteraction_prop.intValue;
switch( st ) {
case Trigger_DoorState.InteractionType.OnPickUpItem:
EditorGUILayout.PropertyField( itemTrigger_prop, new GUIContent("pickUpItem") );
break;
case Trigger_DoorState.InteractionType.OnUseItem:
EditorGUILayout.PropertyField( useItemArea_prop, new GUIContent("useItem") );
break;
case Trigger_DoorState.InteractionType.OnSwitch:
EditorGUILayout.PropertyField( switchObject_prop, new GUIContent("switch") );
break;
}
serializedObject.ApplyModifiedProperties ();
}
}
Anyway, this script doesn’t work and an error message appears:
NullReferenceException: Object reference not set to an instance of an object
UnityEditor.PropertyHandler.OnGUILayout (UnityEditor.SerializedProperty property, UnityEngine.GUIContent label, Boolean includeChildren, UnityEngine.GUILayoutOption[] options) (at C:/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:190)
UnityEditor.EditorGUILayout.PropertyField (UnityEditor.SerializedProperty property, UnityEngine.GUIContent label, Boolean includeChildren, UnityEngine.GUILayoutOption[] options) (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:7296)
UnityEditor.EditorGUILayout.PropertyField (UnityEditor.SerializedProperty property, UnityEngine.GUILayoutOption[] options) (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:7278)
TriggerScriptsEditor.OnInspectorGUI () (at Assets/Editor/TriggerScriptsEditor.cs:23)
UnityEditor.InspectorWindow.DrawEditor (UnityEditor.Editor editor, Int32 editorIndex, Boolean rebuildOptimizedGUIBlock, System.Boolean& showImportedObjectBarNext, UnityEngine.Rect& importedObjectBarRect) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:1235)
UnityEditor.DockArea:OnGUI()
Please help me, i don’t understand the problem.