public override void OnInspectorGUI() { DrawDefaultInspector(); Cone myScript = (Cone)target; if (GUILayout.Button("Build Cone")) { myScript.BuildCone(myScript.gameObject, myScript.HeightSegment, myScript.bottomRadius, myScript.topRadius); } if (GUILayout.Button("Grow Branch")) { myScript.GrowBranch(); } if (GUILayout.Button("Clear Branches")) { myScript.ClearChildren(); } using (var check = new EditorGUI.ChangeCheckScope()) { // Block of code with controls // that may set GUI.changed to true EditorGUILayout.IntSlider(HeightSegment, 8, 30, new GUILayoutOption[] { GUILayout.Height(20), GUILayout.ExpandHeight(false) }); EditorGUILayout.Slider(bottomRadius, 0, 1f, new GUILayoutOption[] { GUILayout.Height(20), GUILayout.ExpandHeight(false) }); EditorGUILayout.Slider(topRadius, 0, 0.5f, new GUILayoutOption[] { GUILayout.Height(20), GUILayout.ExpandHeight(false) }); if (check.changed) { myScript.BuildCone(myScript.gameObject, myScript.HeightSegment, myScript.bottomRadius, myScript.topRadius); // Code to execute if GUI.changed // was set to true inside the block of code above. } serializedObject.ApplyModifiedProperties(); } }