/// <summary> /// 注册一个DbgGUI /// </summary> /// <param name="name"></param> /// <param name="handler"></param> /// <param name="permission">默认是需要管理员权限的</param> public static void AddDbgGUI(string name, Action handler, string permission = Permission_Admin) { if (ms_MapDbgGUI.ContainsKey(name)) { DbgGUIProxy proxy = ms_MapDbgGUI[name]; proxy.handler = handler; proxy.permission = permission; } else { DbgGUIProxy proxy = new DbgGUIProxy(); proxy.name = name; proxy.permission = permission; proxy.handler = handler; ms_MapDbgGUI.Add(name, proxy); if (name == ms_SelectedGUI && EnableSelectedFirst) { ms_ListDbgGUI.Insert(0, proxy); } else { ms_ListDbgGUI.Add(proxy); } } }
public static void RemoveDbgGUI(string name) { if (ms_MapDbgGUI.ContainsKey(name)) { if (ms_SelectedGUI == name) { ms_SelectedGUI = null; } DbgGUIProxy proxy = ms_MapDbgGUI[name]; ms_ListDbgGUI.Remove(proxy); ms_MapDbgGUI.Remove(name); } }
private void OnGUI_CmdGUI() { Rect rtCmdGUI = new Rect(); rtCmdGUI.x += m_BaseSize * 3 + 2; rtCmdGUI.y += (m_BaseSize + 4); rtCmdGUI.width = WinRect.width - (m_BaseSize * 3 + 2) - 2; rtCmdGUI.height = WinRect.height - (m_BaseSize + 4) - 2; GUILayout.BeginArea(rtCmdGUI); { Vector2 drag = getDrag(); if (drag.y != 0 && rtCmdGUI.Contains(new Vector2(downPos.x - WinRect.x, Screen.height - downPos.y - WinRect.y))) { m_ScrollPosition_CmdGUI.y += (drag.y - m_OldDrag_CmdGUI); } m_ScrollPosition_CmdGUI = GUILayout.BeginScrollView(m_ScrollPosition_CmdGUI); { m_OldDrag_CmdGUI = drag.y; if (ms_MapDbgGUI != null && ms_SelectedGUI != null) { if (ms_MapDbgGUI.ContainsKey(ms_SelectedGUI)) { GUI.skin.button.fixedHeight = m_BaseSize; GUI.skin.toggle.fixedHeight = m_BaseSize / 2; DbgGUIProxy proxy = ms_MapDbgGUI[ms_SelectedGUI]; Action handler = proxy.handler; handler(); } } } GUILayout.EndScrollView(); } GUILayout.EndArea(); }
private void OnGUI_CmdList() { Rect rtCmdList = new Rect(); rtCmdList.x += 2; rtCmdList.y += (m_BaseSize + 4); rtCmdList.width = m_BaseSize * 3 + 10; rtCmdList.height = WinRect.height - (m_BaseSize + 4) - 2; GUILayout.BeginArea(rtCmdList); { Vector2 drag = getDrag(); if (drag.y != 0 && rtCmdList.Contains(new Vector2(downPos.x - WinRect.x, Screen.height - downPos.y - WinRect.y))) { m_ScrollPosition_CmdList.y += (drag.y - m_OldDrag_CmdList); } m_ScrollPosition_CmdList = GUILayout.BeginScrollView(m_ScrollPosition_CmdList); { m_OldDrag_CmdList = drag.y; GUILayout.BeginVertical(); { bool isSelectChanged = false; DbgGUIProxy newSelectProxy = null; for (int i = 0; i < ms_ListDbgGUI.Count; i++) { DbgGUIProxy proxy = ms_ListDbgGUI[i]; if (m_Permission.IndexOf(Permission_Admin) >= 0 || m_Permission.IndexOf(proxy.permission) >= 0) { if (ms_SelectedGUI != proxy.name) { if (GUILayout.Button(proxy.name, GUILayout.Width(m_BaseSize * 3 - 5), GUILayout.Height(m_BaseSize))) { ms_SelectedGUI = proxy.name; isSelectChanged = true; newSelectProxy = proxy; } } else { GUI.skin.box.alignment = TextAnchor.MiddleCenter; Color oldColor = GUI.color; GUI.color = Color.red; GUILayout.Box(proxy.name, GUILayout.Width(m_BaseSize * 3 - 5), GUILayout.Height(m_BaseSize)); GUI.color = oldColor; } } } if (isSelectChanged) { PlayerPrefs.SetString(PrefsKey_SelectedGUI, ms_SelectedGUI); if (EnableSelectedFirst) { ms_ListDbgGUI.Remove(newSelectProxy); ms_ListDbgGUI.Insert(0, newSelectProxy); } } } GUILayout.EndVertical(); } GUILayout.EndScrollView(); } GUILayout.EndArea(); }