using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI; using UnityEditor; using UnityEditor.Events; public class ZUICreationWindow : EditorWindow { private bool tryCreatingAgain; private Vector2 scrollPos; [MenuItem("Tools/ZUI/Creation Window...", false, 0)] public static void OpenWindow() { GetWindowWithRect(typeof(ZUICreationWindow), new Rect(0,0, 120, 235)); } void OnGUI() { scrollPos = EditorGUILayout.BeginScrollView(scrollPos); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Setup", GUILayout.Height(40), GUILayout.Width(100))) Setup(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); #region Separator GUILayout.Space(3); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Box("", GUILayout.Height(3), GUILayout.Width(90)); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); GUILayout.Space(3); #endregion EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Menu", GUILayout.Height(40), GUILayout.Width(100))) CreateMenu(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Pop-up", GUILayout.Height(40), GUILayout.Width(100))) CreatePopup(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Side-menu", GUILayout.Height(40), GUILayout.Width(100))) CreateSidemenu(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Elements Group", GUILayout.Height(40), GUILayout.Width(100))) CreateElementsGroup(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndScrollView(); } void Setup() { if (!FindObjectOfType()) { GameObject mm = new GameObject("ZUIManager", typeof(ZUIManager)); mm.transform.SetAsFirstSibling(); Undo.RegisterCreatedObjectUndo(mm, "ZUI Setup"); } if (!FindObjectOfType()) { GameObject sfxm = new GameObject("SFXManager", typeof(SFXManager)); Undo.RegisterCreatedObjectUndo(sfxm, "ZUI Setup"); sfxm.transform.SetSiblingIndex(1); SFXManager sfx = sfxm.GetComponent(); sfx.Sources = new List(); for (int i = 0; i < 10; i++) { GameObject s = new GameObject("Source (" + (i + 1) + ")", typeof(AudioSource)); Undo.RegisterCreatedObjectUndo(s, "ZUI Setup"); AudioSource audioSource = s.GetComponent(); audioSource.playOnAwake = false; sfx.Sources.Add(audioSource); s.transform.SetParent(sfxm.transform); } } } void CreateMenu() { Canvas c = CheckManagers(true); if (c != null) { ZUIManager manager = FindObjectOfType(); Menu[] allMenus = FindObjectsOfType(); 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(); menuRT.offsetMin = menuRT.offsetMax = Vector2.zero; Selection.activeGameObject = menu; Undo.RecordObject(manager, "Create Menu"); manager.AllMenus.Add(menu.GetComponent()); } else { if (tryCreatingAgain) CreateMenu(); } } void CreatePopup() { Canvas c = CheckManagers(true); if (c != null) { ZUIManager manager = FindObjectOfType(); Popup[] allPopups = FindObjectsOfType(); 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(); popRT.offsetMin = popRT.offsetMax = Vector2.zero; Selection.activeGameObject = popup; Undo.RecordObject(manager, "Create Pop-up"); manager.AllPopups.Add(popup.GetComponent()); Button b = popup.GetComponentInChildren