private void clear(LogType type) { DebugMessageList list = mLogMessages[type]; foreach (DebugMessage message in list.Messages) { mAllLogMessages.RemoveMessage(message); } list.Clear(); }
private void Awake() { mScale.x = mScale.y = Screen.width / 960.0f; Vector2Int size = new Vector2Int(960, Mathf.RoundToInt(Screen.height / mScale.y)); mScrollWidth = size.x - mButtonSpace * 2; mScrollHeight = size.y - mButtonSpace * 3 - mButtonHeight; mButtonWidth = Mathf.FloorToInt((size.x - mButtonSpace * 7) / 4.0f); mClearPosition = new Rect(size.x - mButtonHeight * 2 - mButtonSpace * 6, size.y - mButtonHeight + mButtonSpace, mButtonHeight * 2, mButtonHeight - mButtonSpace * 2); mClearAllPosition = new Rect(mClearPosition.x - mClearPosition.width - mButtonSpace, mClearPosition.y, mClearPosition.width, mClearPosition.height); mAllLogMessages = new DebugMessageList(LogType.Log, mGuiSkin.label.fontSize, 3.1f); mLogMessages.Add(LogType.Log, new DebugMessageList(LogType.Log, mGuiSkin.label.fontSize, 3.1f)); mLogMessages.Add(LogType.Warning, new DebugMessageList(LogType.Warning, mGuiSkin.label.fontSize, 3.1f)); mLogMessages.Add(LogType.Error, new DebugMessageList(LogType.Error, mGuiSkin.label.fontSize, 3.1f)); sVisible = this.mVisibleOnAwake; if (sVisible) { mScrollPosition = new Vector2(.0f, float.MaxValue); } }
private void OnGUI() { if (sVisible) { GUI.matrix = Matrix4x4.Scale(mScale); GUILayout.BeginVertical(); GUILayout.Space(mButtonSpace); GUILayout.BeginHorizontal(); GUILayout.Space(mButtonSpace); if (-1 == mCurrentType) { GUILayout.Box("All", mGuiSkin.box, GUILayout.Width(mButtonWidth), GUILayout.Height(mButtonHeight)); } else if (GUILayout.Button("<size=24>All</size>", GUILayout.Width(mButtonWidth), GUILayout.Height(mButtonHeight))) { mCurrentType = -1; } GUILayout.Space(mButtonSpace); if ((int)LogType.Log == mCurrentType) { GUILayout.Box("Information", mGuiSkin.box, GUILayout.Width(mButtonWidth), GUILayout.Height(mButtonHeight)); } else if (GUILayout.Button("<size=24>Information</size>", GUILayout.Width(mButtonWidth), GUILayout.Height(mButtonHeight))) { mCurrentType = (int)LogType.Log; } GUILayout.Space(mButtonSpace); if ((int)LogType.Warning == mCurrentType) { GUILayout.Box("Warning", mGuiSkin.box, GUILayout.Width(mButtonWidth), GUILayout.Height(mButtonHeight)); } else if (GUILayout.Button("<size=24>Warning</size>", GUILayout.Width(mButtonWidth), GUILayout.Height(mButtonHeight))) { mCurrentType = (int)LogType.Warning; } GUILayout.Space(mButtonSpace); if ((int)LogType.Error == mCurrentType) { GUILayout.Box("Error", mGuiSkin.box, GUILayout.Width(mButtonWidth), GUILayout.Height(mButtonHeight)); } else if (GUILayout.Button("<size=24>Error</size>", GUILayout.Width(mButtonWidth), GUILayout.Height(mButtonHeight))) { mCurrentType = (int)LogType.Error; } GUILayout.Space(mButtonSpace); GUILayout.EndHorizontal(); GUILayout.Space(mButtonSpace); mScrollPosition = GUILayout.BeginScrollView(mScrollPosition, false, false, mGuiSkin.verticalScrollbar, mGuiSkin.verticalScrollbar, GUILayout.Width(mScrollWidth), GUILayout.Height(mScrollHeight)); DebugMessageList list = -1 == mCurrentType ? mAllLogMessages : mLogMessages[(LogType)mCurrentType]; foreach (DebugMessage message in list.Messages) { GUILayout.Label(message.message, mGuiSkin.label); if (!string.IsNullOrWhiteSpace(message.stackTraces)) { GUILayout.Label(message.stackTraces, mGuiSkin.label); } } GUILayout.EndScrollView(); GUILayout.EndVertical(); if (GUI.Button(mClearAllPosition, "<size=18>ClearAll</size>")) { this.clearAll(); } if (GUI.Button(mClearPosition, "<size=18>Clear</size>")) { if (-1 == mCurrentType) { this.clearAll(); } else { this.clear((LogType)mCurrentType); } } } }