using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ConsoleToScreen : MonoBehaviour { const int maxLines = 50; const int maxLineLength = 120; private string _logStr = ""; private readonly List _lines = new List(); public int fontSize = 15; void OnEnable() { Application.logMessageReceived += Log; } void OnDisable() { Application.logMessageReceived -= Log; } public void Log(string logString, string stackTrace, LogType type) { foreach (var line in logString.Split('\n')) { if (line.Length <= maxLineLength) { _lines.Add(line); continue; } var lineCount = line.Length / maxLineLength + 1; for (int i = 0; i < lineCount; i++) { if ((i + 1) * maxLineLength <= line.Length) { _lines.Add(line.Substring(i * maxLineLength, maxLineLength)); } else { _lines.Add(line.Substring(i * maxLineLength, line.Length - i * maxLineLength)); } } } if (_lines.Count > maxLines) { _lines.RemoveRange(0, _lines.Count - maxLines); } _logStr = string.Join("\n", _lines); } void OnGUI() { GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, new Vector3(Screen.width / 1200.0f, Screen.height / 800.0f, 1.0f)); GUI.Label(new Rect(10, 10, 800, 370), _logStr, new GUIStyle() { fontSize = Math.Max(10, fontSize) }); } }