public void OnEnable() { #if UNITY_EDITOR UnityEditor.Undo.undoRedoPerformed += OnUndoRedoPerformed; #endif // Populate item states DebugMenuManager dmm = DebugMenuManager.instance; for (int panelIdx = 0; panelIdx < dmm.panelCount; ++panelIdx) { DebugPanel panel = dmm.GetDebugPanel(panelIdx); for (int itemIdx = 0; itemIdx < panel.itemCount; ++itemIdx) { DebugItem item = panel.GetDebugItem(itemIdx); DebugItemState debugItemState = FindDebugItemState(item); if (debugItemState == null) { debugItemState = item.handler.CreateDebugItemState(); debugItemState.hideFlags = HideFlags.DontSave; debugItemState.Initialize(item); debugItemState.SetValue(item.GetValue()); AddDebugItemState(debugItemState); } } } DebugMenuManager.instance.SetDebugMenuState(this); }
public void ReInitializeDebugItemStates() { CleanUp(); // Populate item states DebugMenuManager dmm = DebugMenuManager.instance; for (int panelIdx = 0; panelIdx < dmm.panelCount; ++panelIdx) { DebugPanel panel = dmm.GetDebugPanel(panelIdx); for (int itemIdx = 0; itemIdx < panel.itemCount; ++itemIdx) { DebugItem item = panel.GetDebugItem(itemIdx); DebugItemState debugItemState = FindDebugItemState(item); if (debugItemState == null) { debugItemState = item.handler.CreateDebugItemState(); if (debugItemState != null) { debugItemState.hideFlags = HideFlags.DontSave; debugItemState.Initialize(item); debugItemState.SetValue(item.GetValue()); AddDebugItemState(debugItemState); } else { Debug.LogWarning(String.Format("DebugItemState for item {0} of type {1} is not provided.\nDid you implement CreateDebugItemState in your custom Handler?", item.name, item.type)); } } } } UpdateAllDebugItems(); }
void OnGUI() { if (m_DebugMenu == null) { return; } // Contrary to the menu in the player, here we always render the menu wether it's enabled or not. This is a separate window so user can manage it however they want. EditorGUI.BeginChangeCheck(); DebugMenuUI debugMenuUI = m_DebugMenu.menuUI; int debugMenuCount = m_DebugMenu.panelCount; int activePanelIndex = debugMenuUI.activePanelIndex; using (new EditorGUILayout.HorizontalScope()) { for (int i = 0; i < debugMenuCount; ++i) { GUIStyle style = EditorStyles.miniButtonMid; if (i == 0) { style = EditorStyles.miniButtonLeft; } if (i == debugMenuCount - 1) { style = EditorStyles.miniButtonRight; } string name = m_DebugMenu.GetDebugPanel(i).name; if (GUILayout.Toggle(i == activePanelIndex, new GUIContent(name), style)) { activePanelIndex = i; } } } if (EditorGUI.EndChangeCheck()) { debugMenuUI.activePanelIndex = activePanelIndex; } debugMenuUI.OnEditorGUI(); }
public void BuildGUI() { if (m_Root != null) { return; } float kBorderSize = 5.0f; m_Root = new GameObject("DebugMenu Root"); Canvas canvas = m_Root.AddComponent <Canvas>(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; UI.CanvasScaler canvasScaler = m_Root.AddComponent <UI.CanvasScaler>(); canvasScaler.uiScaleMode = UI.CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = new Vector2(800.0f, 600.0f); // TODO: Move background an layout to the menu itself. m_MainMenuRoot = new GameObject("Background"); m_MainMenuRoot.AddComponent <CanvasRenderer>(); var image = m_MainMenuRoot.AddComponent <UI.Image>(); m_MainMenuRoot.transform.SetParent(m_Root.transform, false); image.rectTransform.pivot = new Vector2(0.0f, 0.0f); image.rectTransform.localPosition = Vector3.zero; image.rectTransform.localScale = Vector3.one; image.rectTransform.anchorMin = new Vector2(0.0f, 0.0f); image.rectTransform.anchorMax = new Vector2(0.5f, 1.0f); image.rectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize); image.rectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f)); image.color = kBackgroundColor; m_MainPanelLayout = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_MainMenuRoot); RectTransform menuVLRectTransform = m_MainPanelLayout.GetComponent <RectTransform>(); menuVLRectTransform.pivot = new Vector2(0.0f, 0.0f); menuVLRectTransform.localPosition = Vector3.zero; menuVLRectTransform.localScale = Vector3.one; menuVLRectTransform.anchorMin = new Vector2(0.0f, 0.0f); menuVLRectTransform.anchorMax = new Vector2(1.0f, 1.0f); menuVLRectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize); menuVLRectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f)); // TODO: Move background an layout to the menu itself. m_PersistentPanelRoot = new GameObject("Background_Persistent"); m_PersistentPanelRoot.AddComponent <CanvasRenderer>(); image = m_PersistentPanelRoot.AddComponent <UI.Image>(); m_PersistentPanelRoot.transform.SetParent(m_Root.transform, false); image.rectTransform.pivot = new Vector2(0.0f, 0.0f); image.rectTransform.localPosition = Vector3.zero; image.rectTransform.localScale = Vector3.one; image.rectTransform.anchorMin = new Vector2(0.7f, 0.8f); image.rectTransform.anchorMax = new Vector2(1.0f, 1.0f); image.rectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize); image.rectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f)); image.color = kBackgroundColor; m_PersistentPanelLayout = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_PersistentPanelRoot); menuVLRectTransform = m_PersistentPanelLayout.GetComponent <RectTransform>(); menuVLRectTransform.pivot = new Vector2(0.0f, 0.0f); menuVLRectTransform.localPosition = Vector3.zero; menuVLRectTransform.localScale = Vector3.one; menuVLRectTransform.anchorMin = new Vector2(0.0f, 0.0f); menuVLRectTransform.anchorMax = new Vector2(1.0f, 1.0f); menuVLRectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize); menuVLRectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f)); m_PersistentPanelRoot.SetActive(false); DebugMenuUI.CreateTextElement("DebugMenuTitle", "Debug Window", 14, TextAnchor.MiddleCenter, m_MainPanelLayout); m_DebugMenuManager.GetPersistentDebugPanel().panelUI.BuildGUI(m_PersistentPanelLayout); m_PersistentDebugPanelUI = m_DebugMenuManager.GetPersistentDebugPanel().panelUI; for (int i = 0; i < m_DebugMenuManager.panelCount; ++i) { m_DebugMenuManager.GetDebugPanel(i).panelUI.BuildGUI(m_MainPanelLayout); m_DebugPanelUIs[i].SetSelected(false); } }