Unity游戏视窗控制台输出

技术交流群:806091680 ! Chinar 欢迎你的加入
END
| 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
| Chinar —— 心分享、心创新! 助力快速在 Game 视窗用 GUI 实现一个控制台的输出面板 为新手节省宝贵的时间,避免采坑! |
Chinar 教程效果:(可打包后执行-便于调试)
全文高清图片,点击即可放大观看 (很多人竟然不知道)
1
—— 直接脚本挂载到空物
将该脚本挂载空物体上,无需其他任何配置
运行 / 打包后,按下按键 Q 即可打开 / 关闭面板
提示:
(可通过 Inspector 面板 ShortcutKey 属性自定义打开控制台面板的快捷键)
#define MACRO_CHINARusing System.Collections.Generic;using UnityEngine;namespace ChinarConsole{ /// <summary> /// Chinar可视控制台 /// </summary> class ChinarViewConsole : MonoBehaviour {#if MACRO_CHINAR struct Log { public string Message; public string StackTrace; public LogType LogType; } #region Inspector 面板属性 [Tooltip("快捷键-开/关控制台")] public KeyCode ShortcutKey = KeyCode.Q; [Tooltip("摇动开启控制台?")] public bool ShakeToOpen = true; [Tooltip("窗口打开加速度")] public float shakeAcceleration = 3f; [Tooltip("是否保持一定数量的日志")] public bool restrictLogCount = false; [Tooltip("最大日志数")] public int maxLogs = 1000; #endregion private readonly List<Log> logs = new List<Log>(); private Log log; private Vector2 scrollPosition; private bool visible; public bool collapse; static readonly Dictionary<LogType, Color> logTypeColors = new Dictionary<LogType, Color> { {LogType.Assert, Color.white}, {LogType.Error, Color.red}, {LogType.Exception, Color.red}, {LogType.Log, Color.white}, {LogType.Warning, Color.yellow}, }; private const string ChinarWindow = "Chinar-控制台"; private const int Edge = 20; readonly GUIContent clearLabel = new GUIContent("清空", "清空控制台内容"); readonly GUIContent hiddenLabel = new GUIContent("合并信息", "隐藏重复信息"); readonly Rect BarRect = new Rect(0, 0, 10000, 20); Rect windowRect = new Rect(Edge, Edge, Screen.width - (Edge * 2), Screen.height - (Edge * 2)); void OnEnable() {#if UNITY_4 Application.RegisterLogCallback(HandleLog);#else Application.logMessageReceived += HandleLog;#endif } void OnDisable() {#if UNITY_4 Application.RegisterLogCallback(null);#else Application.logMessageReceived -= HandleLog;#endif } void Update() { if (Input.GetKeyDown(ShortcutKey)) visible = !visible; if (ShakeToOpen && Input.acceleration.sqrMagnitude > shakeAcceleration) visible = true; } void OnGUI() { if (!visible) return; windowRect = GUILayout.Window(666, windowRect, DrawConsoleWindow, ChinarWindow ); } void DrawConsoleWindow(int windowid) { DrawLogsList(); DrawToolbar(); GUI.DragWindow( BarRect); } void DrawLogsList() { scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (var i = 0; i < logs.Count; i++) { if (collapse && i > 0) if (logs[i].Message != logs[i - 1].Message) continue; GUI.contentColor = logTypeColors[logs[i].LogType]; GUILayout.Label(logs[i].Message); } GUILayout.EndScrollView(); GUI.contentColor = Color.white; } void DrawToolbar() { GUILayout.BeginHorizontal(); if (GUILayout.Button(clearLabel)) { logs.Clear(); } collapse = GUILayout.Toggle(collapse, hiddenLabel, GUILayout.ExpandWidth(false)); GUILayout.EndHorizontal(); } void HandleLog(string message, string stackTrace, LogType type) { logs.Add(new Log { Message = message, StackTrace = stackTrace, LogType = type, }); DeleteExcessLogs(); } void DeleteExcessLogs() { if (!restrictLogCount) return; var amountToRemove = Mathf.Max(logs.Count - maxLogs, 0); print(amountToRemove); if (amountToRemove == 0) { return; } logs.RemoveRange(0, amountToRemove); }#endif }}2
Print / Debug —— 打印输出
当你的项目中有打印输出的时候,面板上会直接显示信息
效果类似于 Unity 的 Console 窗口
void Update() { print("Chinar-Console"); Debug.Log("Debug.Log"); }支持
May Be —— 搞开发,总有一天要做的事!
| 拥有自己的服务器,无需再找攻略! Chinar 提供一站式教程,闭眼式创建! 为新手节省宝贵时间,避免采坑! |
先点击领取 —— 阿里全产品优惠券 (享受最低优惠)
1 —— 云服务器超全购买流程 (新手必备!)
2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)
3—— Windows 服务器配置、运行、建站一条龙 !
4 —— Linux 服务器配置、运行、建站一条龙 !
技术交流群:806091680 ! Chinar 欢迎你的加入
END
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
继续阅读与本文标签相同的文章
-
达达-京东到家完成新一轮5亿美金融资,沃尔玛、京东分别增持
2026-05-27栏目: 教程
-
在线制造服务商云工厂获数千万元A+轮融资
2026-05-27栏目: 教程
-
从教育品牌加盟市场切入,乂渠完成 1300 万人民币的 Pre-A 轮融资
2026-05-27栏目: 教程
-
这个团队10年牺牲1000人,马云远赴非洲为世界上最危险的职业颁奖
2026-05-27栏目: 教程
-
马老师:一个中国人为什么要保护大象?
2026-05-27栏目: 教程
