【Unity3D笔记-002】日志工具
问题场景
- 游戏运行中出现异常,但是未崩溃,还能运行,需要查原因。
- 游戏崩溃,需要查原因。
Unity3D 接口功能
1.关闭日志
csharp
Debug.logger.logEnabled = false;
2.监听输出日志
csharp
// 添加回调
Application.logMessageReceived += logMsgReceivedFunc;
// 删除回调
Application.logMessageReceived -= logMsgReceivedFunc;
- 回调函数原型csharp
public void logMsgReceivedFunc(string logValue, string stackTrace, LogType type) { }
3.暂停游戏
- 将
timeScale
调整为0csharpTime.timeScale = 0f;
日志工具封装
1.替换标准日志
常见问题
- 常见用法: 使用
Debug.Log
和+
号拼接字符串。 - 产生的问题
- (1)产生额外的内存分配
- (2)无法使用统一的方式进行优化处理
优化方案
- 目标: 替换
Debug.Log
接口的内部实现,使用自定义版本,方便优化
和统一管理。 - 方案: 修改
Debug.logger.logHandler
- 增加支持
LogFormat
的Log
方法
- 增加支持
csharp
2.崩溃日志上报
- 目标: 收集应用崩溃时的日志历史
- 原理: Unity在程序的最外层有异常捕获函数,因此崩溃时也可以捕获到日志。
- 方案: 将日志写入到文件中,下次应用启动时,从文件中读取崩溃日志,上传到专门的日志服务器。
- 可以使用本地数据接口PlayerPrefs保存。
csharp