12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*
- * Copyright (C) 2015 Christoph Kutza
- *
- * Please refer to the LICENSE file for license information
- */
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using UnityEngine;
- /// <summary>
- /// Shows the console on all platforms. For debugging.
- /// </summary>
- public class DebugHelper
- {
- public static bool sShowConsole = false;
- public static bool sConsoleAutoScroll = true;
- private static Vector2 mDebugConsoleScrollPos = new Vector2();
- private static StringBuilder mLog = null;
- private static int mLines = 0;
- public static void ActivateConsole()
- {
- if (mLog != null)
- return;
- mLog = new StringBuilder();
- Application.logMessageReceived += LogType;
- }
- private static void LogType(string condition, string stackTrace, LogType type)
- {
- int lines = 0;
- mLog.Append(condition);
- if (type == UnityEngine.LogType.Exception)
- {
- lines += stackTrace.Count((x) => { return x == '\n'; });
- mLog.Append(stackTrace);
- }
- mLog.Append("\n");
- lines++;
- mLines += lines;
- int foundLines = 0;
- for (int i = mLog.Length - 1; i >= 0; i--)
- {
- if (mLog[i] == '\n')
- {
- foundLines++;
- if (foundLines == 100)
- {
- mLog.Remove(0, i + 1);
- break;
- }
- }
- }
- }
- public static void DrawConsole()
- {
- if (mLog == null)
- return;
- if (sShowConsole == false)
- {
- if (GUI.Button(new Rect(Screen.width - 40*2, Screen.height - 20*2, 40*2, 20*2), "Show"))
- {
- sShowConsole = true;
- }
- }
- else
- {
- if (GUI.Button(new Rect(Screen.width - 40*2, Screen.height * 0.75f - 20*2, 40*2, 20*2), "Hide"))
- {
- sShowConsole = false;
- }
- if (GUI.Button(new Rect(Screen.width - 90*2, Screen.height * 0.75f - 20*2, 40*2, 20*2), "Auto"))
- {
- sConsoleAutoScroll = !sConsoleAutoScroll;
- }
- GUIStyle textStyle = new GUIStyle();
- textStyle.normal.textColor = Color.white;
- textStyle.richText = true;
- GUI.Box(new Rect(0, Screen.height * 0.75f, Screen.width, Screen.height * 0.25f), "");
- GUILayout.BeginArea(new Rect(0, Screen.height * 0.75f, Screen.width, Screen.height * 0.25f));
- mDebugConsoleScrollPos = GUILayout.BeginScrollView(mDebugConsoleScrollPos);
- if(sConsoleAutoScroll)
- mDebugConsoleScrollPos = new Vector2(0, 1000000000);
- GUILayout.TextArea(mLog.ToString(), textStyle);
- GUILayout.EndScrollView();
- GUILayout.EndArea();
- }
- }
- }
|