Unity在屏幕上面输出错误信息

Unity在屏幕上面输出错误信息
最新回答
锁住浪漫

2026-10-17 10:54:23

在Unity中,可以通过编写一个简单的脚本在屏幕上输出错误信息。以下是一个完整的实现方案:

核心实现步骤
  1. 创建错误监听脚本:继承MonoBehaviour,通过Unity的日志系统捕获错误
  2. GUI显示系统:使用OnGUI方法绘制可视化错误面板
  3. 样式定制:设置字体、颜色、布局等显示属性
  4. 滚动支持:为长错误信息添加滚动条功能
完整代码实现using UnityEngine;public class ErrorDisplay : MonoBehaviour{ private string errorMessage = ""; private Vector2 scrollPosition = Vector2.zero; private bool showError = false; void OnEnable() { // 注册日志回调 Application.logMessageReceived += HandleLog; } void OnDisable() { // 取消注册 Application.logMessageReceived -= HandleLog; } void HandleLog(string logString, string stackTrace, LogType type) { // 只处理错误和异常类型 if (type == LogType.Error || type == LogType.Exception) { errorMessage = $"错误类型: {type}n{logString}nn堆栈跟踪:n{stackTrace}"; showError = true; scrollPosition = Vector2.zero; // 重置滚动位置 } } void OnGUI() { if (!showError) return; // 创建自定义样式 GUIStyle style = new GUIStyle(GUI.skin.box); style.wordWrap = true; style.fontSize = 16; style.alignment = TextAnchor.UpperLeft; style.normal.textColor = Color.red; style.padding = new RectOffset(10, 10, 10, 10); // 计算显示区域(屏幕80%大小) float boxWidth = Screen.width * 0.8f; float boxHeight = Screen.height * 0.8f; float x = (Screen.width - boxWidth) / 2; float y = (Screen.height - boxHeight) / 2; // 创建滚动视图区域 Rect scrollViewRect = new Rect(x, y, boxWidth, boxHeight); // 计算内容高度(用于滚动条) GUIStyle tempStyle = new GUIStyle(style); tempStyle.fontSize = 16; // 保持与显示样式一致 float contentHeight = tempStyle.CalcHeight(new GUIContent(errorMessage), boxWidth - 20); // 开始滚动视图 scrollPosition = GUI.BeginScrollView( scrollViewRect, scrollPosition, new Rect(0, 0, boxWidth - 20, contentHeight) ); // 绘制错误框 GUI.Box(new Rect(0, 0, boxWidth - 20, contentHeight), errorMessage, style); // 结束滚动视图 GUI.EndScrollView(); // 添加关闭按钮 if (GUI.Button(new Rect(x + boxWidth - 80, y - 25, 80, 20), "关闭")) { showError = false; } }}关键功能说明
  1. 错误捕获机制:

    通过Application.logMessageReceived事件监听所有日志

    只处理LogType.Error和LogType.Exception类型

  2. 显示优化:

    居中显示错误面板(屏幕80%大小)

    自动换行处理长文本

    红色文字提高可见性

    包含完整的堆栈跟踪信息

  3. 交互功能:

    可滚动的错误面板(长文本时自动显示滚动条)

    关闭按钮可隐藏错误显示

  4. 性能考虑:

    只在有错误时显示GUI

    正确处理事件注册/注销

使用方法
  1. 创建空GameObject并附加此脚本
  2. 或直接将脚本添加到现有UI管理对象
  3. 运行时产生的错误会自动显示在屏幕中央
效果增强建议
  1. 可添加淡入淡出动画效果
  2. 可设置错误显示时间限制
  3. 可添加错误分类统计功能
  4. 可保存错误日志到文件

这个实现提供了完整的错误显示解决方案,开发者可以根据需要调整样式、布局和交互方式。