using UnityEditor; using UnityEngine; [CustomEditor(typeof(GradualActivatorController))] public class GradualActivatorControllerEditor : Editor { public override void OnInspectorGUI() { serializedObject.Update(); GradualActivatorController controller = (GradualActivatorController)target; EditorGUILayout.LabelField("Gradual Activators Settings", EditorStyles.boldLabel); EditorGUILayout.Space(); SerializedProperty activatorsProp = serializedObject.FindProperty("activators"); for (int i = 0; i < activatorsProp.arraySize; i++) { SerializedProperty entry = activatorsProp.GetArrayElementAtIndex(i); SerializedProperty activatorProp = entry.FindPropertyRelative("gradualActivator"); SerializedProperty activateProp = entry.FindPropertyRelative("activate"); EditorGUILayout.BeginVertical("box"); EditorGUILayout.PropertyField(activatorProp, new GUIContent($"Activator {i + 1}")); if (activatorProp.objectReferenceValue != null) { activateProp.boolValue = EditorGUILayout.Popup( "Action", activateProp.boolValue ? 0 : 1, new[] { "Activate", "Deactivate" } ) == 0; } EditorGUILayout.EndVertical(); } if (GUILayout.Button("Add Activator")) { activatorsProp.arraySize++; } EditorGUILayout.Space(); EditorGUILayout.PropertyField(serializedObject.FindProperty("delayBetweenActivators"), new GUIContent("Delay Between Activators")); serializedObject.ApplyModifiedProperties(); } }