public override void OnInspectorGUI() { serializedObject.Update(); //EditorGUI.indentLevel++; GUILayout.BeginVertical(GUI.skin.box); EditorGUILayout.PropertyField(interactPositionProperty); GUILayout.Space(3.0f); for (int i = 0; i < conditionReactionCollectionEditor.Count; i++) { conditionReactionCollectionEditor[i].OnInspectorGUI(); } GUILayout.BeginHorizontal(); // If user press the button, add a new ConditionReationCollection and an Editor binding with it if (GUILayout.Button("Add new Conditions->Reactions", GUILayout.Width(240.0f))) { conditionReactionCollectionArrayProperty.AddElementToProperty (ConditionReationCollectionEditor.CreateConditionReactionCollection()); conditionReactionCollectionEditor.Add( CreateEditor(interactable.conditionReactionCollectionArray[interactable.conditionReactionCollectionArray.Count - 1]) as ConditionReationCollectionEditor); } // If user press the button, remove the last item form the list, and destory the binding editor if (GUILayout.Button("Remove Conditions->Reactions", GUILayout.Width(240.0f))) { int index = interactable.conditionReactionCollectionArray.Count - 1; Debug.Log(index); conditionReactionCollectionArrayProperty.RemoveElementFromPropertyByIndex(index); DestroyImmediate(conditionReactionCollectionEditor[index]); conditionReactionCollectionEditor.RemoveAt(index); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); //EditorGUI.indentLevel--; serializedObject.ApplyModifiedProperties(); }