void CreateMenu() { Canvas c = CheckManagers(true); if (c != null) { ZUIManager manager = FindObjectOfType <ZUIManager>(); Menu[] allMenus = FindObjectsOfType <Menu>(); GameObject menu = Instantiate((GameObject)EditorGUIUtility.Load("ZUI/Templates/Menu.prefab"), c.transform); Undo.RegisterCreatedObjectUndo(menu, "Create Menu"); menu.name = "Menu (" + (allMenus.Length + 1) + ")"; RectTransform menuRT = menu.GetComponent <RectTransform>(); menuRT.offsetMin = menuRT.offsetMax = Vector2.zero; menuRT.localScale = Vector3.one; Selection.activeGameObject = menu; Undo.RecordObject(manager, "Create Menu"); manager.AllMenus.Add(menu.GetComponent <Menu>()); } else { if (tryCreatingAgain) { CreateMenu(); } } }
void CreateSidemenu() { Canvas c = CheckManagers(true); if (c != null) { ZUIManager manager = FindObjectOfType <ZUIManager>(); SideMenu[] allSideMenus = FindObjectsOfType <SideMenu>(); GameObject menu = Instantiate((GameObject)EditorGUIUtility.Load("ZUI/Templates/SideMenu.prefab"), c.transform); Undo.RegisterCreatedObjectUndo(menu, "Create Side-menu"); menu.name = "SideMenu (" + (allSideMenus.Length + 1) + ")"; RectTransform smRT = menu.GetComponent <RectTransform>(); smRT.offsetMin = smRT.offsetMax = Vector2.zero; smRT.localScale = Vector3.one; Selection.activeGameObject = menu; Undo.RecordObject(manager, "Create Side-menu"); manager.AllSideMenus.Add(menu.GetComponent <SideMenu>()); Button b = menu.GetComponentInChildren <Button>(); if (b) { UnityAction closeMethod = new UnityAction(FindObjectOfType <ZUIManager>().CloseSideMenu); UnityEventTools.AddPersistentListener(b.onClick, closeMethod); } } else { if (tryCreatingAgain) { CreateSidemenu(); } } }
void CreatePopup() { Canvas c = CheckManagers(true); if (c != null) { ZUIManager manager = FindObjectOfType <ZUIManager>(); Popup[] allPopups = FindObjectsOfType <Popup>(); GameObject popup = Instantiate((GameObject)EditorGUIUtility.Load("ZUI/Templates/Popup.prefab"), c.transform); Undo.RegisterCreatedObjectUndo(popup, "Create Pop-up"); popup.name = "Popup (" + (allPopups.Length + 1) + ")"; RectTransform popRT = popup.GetComponent <RectTransform>(); popRT.offsetMin = popRT.offsetMax = Vector2.zero; popRT.localScale = Vector3.one; Selection.activeGameObject = popup; Undo.RecordObject(manager, "Create Pop-up"); manager.AllPopups.Add(popup.GetComponent <Popup>()); Button b = popup.GetComponentInChildren <Button>(); if (b) { UnityAction closeMethod = new UnityAction(FindObjectOfType <ZUIManager>().ClosePopup); UnityEventTools.AddPersistentListener(b.onClick, closeMethod); } } else { if (tryCreatingAgain) { CreatePopup(); } } }
public override void OnInspectorGUI() { Popup myPopup = target as Popup; ZUIManager zM = FindObjectOfType <ZUIManager>(); zM.GetAllHolders(); #region Activate Button if (GUILayout.Button("Activate", GUILayout.Height(30))) { foreach (Popup p in zM.AllPopups) { if (p == null) { continue; } Undo.RecordObject(p.gameObject, "Activate Pop-up"); if (p == myPopup) { p.gameObject.SetActive(true); } else { p.gameObject.SetActive(false); } } } #endregion #region User Interface EditorGUILayout.Space(); EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel); EditorGUILayout.LabelField("Is Visible?", visible.boolValue.ToString()); EditorGUILayout.PropertyField(deactivateWhileInvisible); EditorGUILayout.Space(); EditorGUILayout.LabelField("Elements", EditorStyles.boldLabel); EditorGUILayout.PropertyField(animatedElements, true); EditorGUILayout.Space(); EditorGUILayout.LabelField("Information", EditorStyles.boldLabel); EditorGUILayout.PropertyField(titleHolder); EditorGUILayout.PropertyField(bodyHolder); EditorGUILayout.Space(); EditorGUILayout.LabelField("Switching", EditorStyles.boldLabel); if (useSimpleActivation.boolValue == true) { EditorGUILayout.HelpBox("No animations will be played, all the animated elements will be ignored because \"Use Simple Activation\" option is set to true.", MessageType.Info); } EditorGUILayout.PropertyField(useSimpleActivation); EditorGUILayout.Space(); EditorGUILayout.LabelField("Sounds & Events", EditorStyles.boldLabel); EditorGUILayout.PropertyField(showingClip); EditorGUILayout.PropertyField(hidingClip); EditorGUILayout.Space(); EditorGUILayout.PropertyField(onShow); EditorGUILayout.PropertyField(onHide); EditorGUILayout.PropertyField(onShowComplete); EditorGUILayout.PropertyField(onHideComplete); EditorGUILayout.PropertyField(ignoreEventsOnInitialization, new GUIContent("Ignore On Initialization")); EditorGUILayout.PropertyField(overrideBack); if (overrideBack.boolValue) { EditorGUILayout.PropertyField(myBack); } EditorGUILayout.Space(); #endregion #region Tools EditorGUILayout.LabelField("Tools", EditorStyles.boldLabel); #region Update Animated Elements Button if (GUILayout.Button("Update Animated Elements", GUILayout.Height(30))) { //Save old elements list to make a check after updating. List <UIElement> oldElements = myPopup.AnimatedElements; added = 0; removed = 0; Undo.RecordObject(myPopup, "Update Animated Items"); myPopup.AnimatedElements = GetAnimatedElements(myPopup.transform); UIElement popupUE = myPopup.GetComponent <UIElement>(); if (popupUE) { myPopup.AnimatedElements.Insert(0, popupUE); } //Check which elements are added and which elements are removed. for (int i = 0; i < myPopup.AnimatedElements.Count; i++) { Undo.RecordObject(myPopup.AnimatedElements[i], "Update Animated Items"); if (!oldElements.Contains(myPopup.AnimatedElements[i])) { added++; } } removed = oldElements.Count - myPopup.AnimatedElements.Count + added; updatedElements = true; } #endregion #region Elements Updated Info if (updatedElements) { string removedText = removed != 0 ? "Removed " + removed + " element" + (removed == 1 ? "." : "s.") : ""; string addedText = added != 0 ? "Added " + added + " element" + (added == 1 ? ". " : "s. ") : ""; string finalText = (added != 0 || removed != 0) ? addedText + removedText : "Nothing changed. Is the element you want this holder to control being controlled by another holder?"; EditorGUILayout.HelpBox(finalText, (added != 0 || removed != 0) ? MessageType.Info : MessageType.Warning); } #endregion if (!zM && !AssetDatabase.Contains(target)) { Debug.LogError("There's no ZUIManager script in the scene, you can have it by using the menu bar ZUI>Creation Window>Setup. Or by creating an empty GameObject and add ZUIManager script to it."); serializedObject.ApplyModifiedProperties(); return; } #region Check Menu Independant Elements if (myPopup.AnimatedElements != null) { for (int i = 0; i < myPopup.AnimatedElements.Count; i++) { if (myPopup.AnimatedElements[i] == null) { continue; } if (!myPopup.AnimatedElements[i].MenuDependent) { if (EditorUtility.DisplayDialog("Error", myPopup.AnimatedElements[i].gameObject.name + " is menu independant but is inside this Pop-up's elements list.", "Remove it from the list", "Switch it to menu dependant")) { Undo.RecordObject(myPopup, "Removing from list"); myPopup.AnimatedElements[i].ControlledBy = null; myPopup.AnimatedElements.RemoveAt(i); i--; continue; } else { Undo.RecordObject(myPopup, "Switch to menu dependant"); myPopup.AnimatedElements[i].MenuDependent = true; } } if (myPopup.AnimatedElements[i].ControlledBy != myPopup) { myPopup.AnimatedElements[i].ControlledBy = myPopup; } } } #endregion #endregion serializedObject.ApplyModifiedProperties(); }
void Awake() { Instance = this; }
public override void OnInspectorGUI() { //base.OnInspectorGUI(); ZUIManager myZUIManager = target as ZUIManager; EditorGUILayout.Space(); EditorGUILayout.PropertyField(autoFindHolders, new GUIContent("Auto Find Holders")); if (!autoFindHolders.boolValue) { #region Menus EditorGUILayout.LabelField("Menus", EditorStyles.boldLabel); EditorGUILayout.PropertyField(allMenus, true); EditorGUILayout.PropertyField(animateFirstMenuAtStart); //EditorGUILayout.LabelField("Tools", EditorStyles.boldLabel); if (GUILayout.Button("Update All Menus", GUILayout.Height(30))) { Undo.RecordObject(myZUIManager, "Update All Menus"); myZUIManager.AllMenus = GetAllMenus(); } if (GUILayout.Button("Activate All Menus", GUILayout.Height(30))) { foreach (Menu m in myZUIManager.AllMenus) { Undo.RecordObject(m.gameObject, "Activate All Menus"); m.gameObject.SetActive(true); } } #endregion EditorGUILayout.Space(); #region Pop-ups EditorGUILayout.LabelField("Pop-ups", EditorStyles.boldLabel); EditorGUILayout.PropertyField(allPopups, true); if (GUILayout.Button("Update All Pop-ups", GUILayout.Height(30))) { Undo.RecordObject(myZUIManager, "Update All Pop-ups"); myZUIManager.AllPopups = GetAllPopups(); } if (GUILayout.Button("Activate All Pop-ups", GUILayout.Height(30))) { foreach (Popup sM in myZUIManager.AllPopups) { Undo.RecordObject(sM.gameObject, "Activate All Pop-ups"); sM.gameObject.SetActive(true); } } #endregion EditorGUILayout.Space(); #region Side-menus EditorGUILayout.LabelField("Side-menus", EditorStyles.boldLabel); EditorGUILayout.PropertyField(allSideMenus, true); if (GUILayout.Button("Update All Side-menus", GUILayout.Height(30))) { Undo.RecordObject(myZUIManager, "Update All Side-menus"); myZUIManager.AllSideMenus = GetAllSideMenus(); } if (GUILayout.Button("Activate All Side-menus", GUILayout.Height(30))) { foreach (SideMenu sM in myZUIManager.AllSideMenus) { Undo.RecordObject(sM.gameObject, "Activate All Side-menus"); sM.gameObject.SetActive(true); } } #endregion } EditorGUILayout.Space(); #region General Settings EditorGUILayout.LabelField("General Settings", EditorStyles.boldLabel); if (autoFindHolders.boolValue) { EditorGUILayout.PropertyField(animateFirstMenuAtStart); } EditorGUILayout.PropertyField(escIsBack); if (!autoFindHolders.boolValue && GUILayout.Button("Update All", GUILayout.Height(30))) { Undo.RecordObject(myZUIManager, "Update All"); myZUIManager.AllMenus = GetAllMenus(); myZUIManager.AllPopups = GetAllPopups(); myZUIManager.AllSideMenus = GetAllSideMenus(); } #endregion serializedObject.ApplyModifiedProperties(); }