public override void OnInspectorGUI() { //base.OnInspectorGUI (); ManagersInstantiator mgr = this.target as ManagersInstantiator; for (int i = 0; i < mgr.managers.Count; i++) { Color c = GUI.color; EditorGUILayout.BeginHorizontal(); mgr.managers [i] = EditorGUILayout.ObjectField(mgr.managers [i], typeof(GameObject)) as GameObject; if (GUILayout.Button("Up", GUILayout.MaxWidth(25))) { if (i > 0) { GameObject go = mgr.managers [i - 1]; mgr.managers [i - 1] = mgr.managers [i]; mgr.managers [i] = go; } } if (GUILayout.Button("Down", GUILayout.MaxWidth(25))) { if (i < mgr.managers.Count - 1) { GameObject go = mgr.managers [i + 1]; mgr.managers [i + 1] = mgr.managers [i]; mgr.managers [i] = go; } } GUI.color = Color.red; if (GUILayout.Button("Remove", GUILayout.MaxWidth(40))) { mgr.managers.RemoveAt(i); } GUI.color = c; EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("Add Manager")) { mgr.managers.Add(null); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); ManagersInstantiator manager = target as ManagersInstantiator; prefabs.Clear(); bool dirty = false; if (manager.prefabsToInstantiate != null) { prefabs.AddRange(manager.prefabsToInstantiate); } for (int i = 0; i < prefabs.Count; i++) { GameObject prefab = prefabs[i]; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Prefab #" + i, GUILayout.MaxWidth(80)); GameObject newPrefab = (GameObject)EditorGUILayout.ObjectField(prefab, typeof(GameObject), false); if (newPrefab != prefab) { prefabs[i] = newPrefab; dirty = true; } if (GUILayout.Button("Up")) { if (i > 0) { prefabs.RemoveAt(i); prefabs.Insert(i - 1, prefab); dirty = true; } } if (GUILayout.Button("Down")) { if (i < prefabs.Count - 1) { prefabs.RemoveAt(i); prefabs.Insert(i + 1, prefab); dirty = true; } } if (GUILayout.Button("Del.")) { prefabs.RemoveAt(i); dirty = true; } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("Add New")) { prefabs.Add(null); dirty = true; } if (dirty) { Undo.RecordObject(manager, "Manager Instantiator Modification"); manager.prefabsToInstantiate = prefabs.ToArray(); EditorUtility.SetDirty(manager); } }