public override void OnInspectorGUI() { ShapesManager1 shapesManager = (ShapesManager1)target;//get the target EditorGUILayout.Separator(); #if !(UNITY_5 || UNITY_2017 || UNITY_2018_0 || UNITY_2018_1 || UNITY_2018_2) //Unity 2018.3 or higher EditorGUILayout.BeginHorizontal(); GUI.backgroundColor = Colors.cyanColor; EditorGUILayout.Separator(); if (PrefabUtility.GetPrefabParent(shapesManager.gameObject) != null) { if (GUILayout.Button("Apply", GUILayout.Width(70), GUILayout.Height(30), GUILayout.ExpandWidth(false))) { PrefabUtility.ApplyPrefabInstance(shapesManager.gameObject, InteractionMode.AutomatedAction); } } GUI.backgroundColor = Colors.whiteColor; EditorGUILayout.EndHorizontal(); #endif EditorGUILayout.Separator(); EditorGUILayout.HelpBox("Follow the instructions below on how to add new shape's prefab", MessageType.Info); EditorGUILayout.Separator(); showInstructions = EditorGUILayout.Foldout(showInstructions, "Instructions"); EditorGUILayout.Separator(); if (showInstructions) { EditorGUILayout.HelpBox("- Click on 'Add New Shape' button to add new Shape", MessageType.None); EditorGUILayout.HelpBox("- Click on 'Remove Last Shape' button to remove the lastest shape in the list", MessageType.None); EditorGUILayout.HelpBox("- Click on ShapesManager1 'Apply' button that located at the top to save your changes ", MessageType.None); } EditorGUILayout.Separator(); GUILayout.BeginHorizontal(); GUI.backgroundColor = Colors.greenColor; if (GUILayout.Button("Add New Shape", GUILayout.Width(110), GUILayout.Height(20))) { shapesManager.shapes.Add(new ShapesManager1.Shape1()); } GUI.backgroundColor = Colors.yellowColor; if (GUILayout.Button("More Assets", GUILayout.Width(110), GUILayout.Height(20))) { Application.OpenURL("https://www.assetstore.unity3d.com/en/#!/search/page=1/sortby=popularity/query=publisher:9268"); } GUI.backgroundColor = Colors.whiteColor; GUILayout.EndHorizontal(); EditorGUILayout.Separator(); for (int i = 0; i < shapesManager.shapes.Count; i++) { shapesManager.shapes[i].showContents1 = EditorGUILayout.Foldout(shapesManager.shapes[i].showContents1, "Shape[" + i + "]"); if (shapesManager.shapes[i].showContents1) { EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); //EditorGUILayout.Separator(); GUI.backgroundColor = Colors.redColor; if (GUILayout.Button("Remove", GUILayout.Width(70), GUILayout.Height(20))) { bool isOk = EditorUtility.DisplayDialog("Confirm Message", "Are you sure that you want to remove the selected shape ?", "yes", "no"); if (isOk) { shapesManager.shapes.RemoveAt(i); return; } } GUI.backgroundColor = Colors.whiteColor; EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); //Shape prefab shapesManager.shapes[i].gamePrefab1 = EditorGUILayout.ObjectField("Shape Prefab", shapesManager.shapes[i].gamePrefab1, typeof(GameObject), true) as GameObject; if (shapesManager.shapes[i].gamePrefab1 != null) { previewSprite = null; if (shapesManager.shapes[i].gamePrefab1.GetComponent <Image>() != null) { previewSprite = shapesManager.shapes[i].gamePrefab1.GetComponent <Image>().sprite; } EditorGUILayout.Separator(); EditorGUILayout.LabelField("Shape Prefab Preview"); EditorGUILayout.ObjectField("", previewSprite, typeof(Sprite), false); } EditorGUILayout.BeginHorizontal(); EditorGUI.BeginDisabledGroup(i == shapesManager.shapes.Count - 1); if (GUILayout.Button("▼", GUILayout.Width(22), GUILayout.Height(22))) { MoveDown(i, shapesManager); } EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(i - 1 < 0); if (GUILayout.Button("▲", GUILayout.Width(22), GUILayout.Height(22))) { MoveUp(i, shapesManager); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(2)); } EditorGUILayout.Separator(); } if (GUI.changed) { DirtyUtil.MarkSceneDirty(); } }
private void MoveDown(int index, ShapesManager1 sm) { ShapesManager1.Shape1 shape = sm.shapes[index]; sm.shapes.RemoveAt(index); sm.shapes.Insert(index + 1, shape); }