public DebugColorItemUI(GameObject parent, DebugItem debugItem, string name) : base(debugItem) { m_DebugItem = debugItem; m_Root = DebugMenuUI.CreateHorizontalLayoutGroup(name, true, true, false, false, parent); m_Name = DebugMenuUI.CreateTextElement(m_DebugItem.name, name, 10, TextAnchor.MiddleLeft, m_Root); var layoutElemName = m_Name.AddComponent <UI.LayoutElement>(); layoutElemName.minWidth = DebugMenuUI.kDebugItemNameWidth; // Force layout because we need the right height for the color rect element afterward. UI.LayoutRebuilder.ForceRebuildLayoutImmediate(m_Root.GetComponent <RectTransform>()); RectTransform nameRect = m_Name.GetComponent <RectTransform>(); m_ColorRect = new GameObject(); m_ColorRect.transform.SetParent(m_Root.transform, false); m_ColorRect.AddComponent <UI.Image>(); UI.LayoutElement layoutElem = m_ColorRect.AddComponent <UI.LayoutElement>(); // We need to set min width/height because without an image, the size would be zero. layoutElem.minHeight = nameRect.rect.height; layoutElem.minWidth = 40.0f; Update(); }
// Default Implementation: just build all items with provided handler. public virtual void BuildGUIImpl(GameObject parent) { DebugMenuUI.CreateTextElement(string.Format("{0} Title", m_DebugPanel.name), m_DebugPanel.name, 14, TextAnchor.MiddleLeft, parent); for (int i = 0; i < m_DebugPanel.itemCount; i++) { DebugItem item = m_DebugPanel.GetDebugItem(i); AddDebugItemUI(item, parent); } }
protected DebugSimpleItemUI(GameObject parent, DebugItem debugItem, string name) : base(debugItem) { m_Root = DebugMenuUI.CreateHorizontalLayoutGroup("", true, true, false, false, parent); m_Name = DebugMenuUI.CreateTextElement(m_DebugItem.name, name, 10, TextAnchor.MiddleLeft, m_Root); var layoutElem = m_Name.AddComponent <UI.LayoutElement>(); layoutElem.minWidth = DebugMenuUI.kDebugItemNameWidth; m_Value = DebugMenuUI.CreateTextElement(string.Format("{0} value", name), "", 10, TextAnchor.MiddleLeft, m_Root); }
private void RebuildGUI() { m_Root.transform.DetachChildren(); DebugMenuUI.CreateTextElement(string.Format("{0} Title", m_Name), m_Name, 14, TextAnchor.MiddleLeft, m_Root); m_ItemsUI.Clear(); foreach (DebugMenuItem menuItem in m_Items) { DebugItemDrawer drawer = menuItem.drawer; // Should never be null, we have at least the default drawer m_ItemsUI.Add(drawer.BuildGUI(m_Root, menuItem)); } }
// Default Implementation: just build all items with provided handler. public virtual void BuildGUIImpl(GameObject parent) { DebugMenuUI.CreateTextElement(string.Format("{0} Title", m_DebugPanel.name), m_DebugPanel.name, 14, TextAnchor.MiddleLeft, parent); m_ItemsUI.Clear(); for (int i = 0; i < m_DebugPanel.itemCount; i++) { DebugItem item = m_DebugPanel.GetDebugItem(i); if (!((item.flags & DebugItemFlag.EditorOnly) != 0)) { DebugItemHandler handler = item.handler; // Should never be null, we have at least the default handler m_ItemsUI.Add(handler.BuildGUI(parent)); } } }
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; GameObject goVL = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_MainMenuRoot); RectTransform menuVLRectTransform = goVL.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_PersistentMenuRoot = new GameObject("Background_Persistent"); m_PersistentMenuRoot.AddComponent <CanvasRenderer>(); image = m_PersistentMenuRoot.AddComponent <UI.Image>(); m_PersistentMenuRoot.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; GameObject goVL2 = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_PersistentMenuRoot); menuVLRectTransform = goVL2.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_PersistentMenuRoot.SetActive(false); DebugMenuUI.CreateTextElement("DebugMenuTitle", "Debug Menu", 14, TextAnchor.MiddleCenter, goVL); int menuCount = m_DebugMenuManager.menuCount; m_MenuRoots = new GameObject[menuCount]; for (int i = 0; i < menuCount; ++i) { m_MenuRoots[i] = m_DebugMenuManager.GetDebugMenu(i).BuildGUI(goVL); } m_DebugMenuManager.GetPersistentDebugMenu().BuildGUI(goVL2); }