当前位置: 首页 > news >正文

Unity Debug 扩展

时间:2026.07

版本:Unity 6000.3.19f1


using System; using System.IO; using System.Text; using System.Threading.Tasks; using UnityEngine; public class DebugExtend { /// <summary> /// 是否记录日志信息 /// </summary> public static bool IsRecordLog = true; /// <summary> /// 打印日志信息 /// </summary> /// <param name="message">日志内容</param> public static async void Log(object message) { Debug.Log(message); await RecordLogInfo(message, DebugLogType.Log); } /// <summary> /// 打印日志警告信息 /// </summary> /// <param name="message">日志内容</param> public static async void LogWarning(object message) { Debug.LogWarning(message); await RecordLogInfo(message, DebugLogType.Warning); } /// <summary> /// 打印日志错误信息 /// </summary> /// <param name="message">日志内容</param> public static async void LogError(object message) { Debug.LogError(message); await RecordLogInfo(message, DebugLogType.Error); } /// <summary> /// 打印日志信息 /// </summary> /// <param name="message">日志内容</param> /// <param name="logType">打印日志类型</param> public static void Log(object message, DebugLogType logType) { switch (logType) { case DebugLogType.Log: Log(message); break; case DebugLogType.Error: LogError(message); break; case DebugLogType.Warning: LogWarning(message); break; } } /// <summary> /// 记录日志信息 /// </summary> /// <param name="message">日志内容</param> /// <param name="logType">打印日志类型</param> /// <returns></returns> private static async Task RecordLogInfo(object message, DebugLogType logType) { if (!IsRecordLog) return; // 若关闭日志输出,则不再进行记录 if (!Debug.unityLogger.logEnabled) return; string filePath = ""; string fileName = $"{logType}.txt"; string newLine = Environment.NewLine; // 换行符处理(保证跨平台兼容性) string time_stamp = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"; // 当前时间戳 string appendContent = $"[{logType.ToString().ToLower()}] {time_stamp}{newLine}{message}{newLine}{newLine}"; #if UNITY_EDITOR filePath = Path.Combine(Application.dataPath, "Editor", fileName); #elif UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL filePath = Path.Combine(Application.persistentDataPath, fileName); #else filePath = Path.Combine(Environment.CurrentDirectory, fileName); #endif #if UNITY_WEBGL && !UNITY_EDITOR File.AppendAllText(filePath, appendContent, Encoding.UTF8); if (File.Exists(filePath)) Debug.Log($"Save content:\n{File.ReadAllText(filePath)}"); await Task.Delay(1); #else Debug.Log("Save file path : " + filePath); // 确保目录存在 Directory.CreateDirectory(Path.GetDirectoryName(filePath)); // 异步追加文件内容(避免主线程卡顿) await Task.Run(() => { try { #if !UNITY_ANDROID && !UNITY_IOS //// 方法一:true表示追加模式 //using (StreamWriter writer = new StreamWriter(filePath, true)) //{ // writer.Write(appendContent); //} #endif // 方法二:追加文本(如果文件不存在会自动创建),指定编码格式 File.AppendAllText(filePath, appendContent, Encoding.UTF8); } catch (Exception e) { Debug.LogError($"Unable to write log content:{e.Message}"); } }); #endif #if UNITY_EDITOR // 刷新资源数据(刷新日志信息) UnityEditor.AssetDatabase.Refresh(); #endif } } public enum DebugLogType { Log, Warning, Error }
http://www.jsqmd.com/news/1191521/

相关文章:

  • 什么是行星减速机?从结构、参数到工程应用完整解析
  • 旅行规划响应慢?实测ChatGPT-4o vs GPT-4 Turbo行程生成耗时对比(含Token消耗热力图与缓存优化策略)
  • 模板驱动型文档自动化:结构化填充与多格式一键交付
  • 【RayLink】从“能用”到“好用”:免费版与付费版如何选择?
  • C++与OpenCV实现高效图片格式转换:从原理到工程实践
  • Claude Code Skills 机制解析:文档驱动开发与多模态协同工作流
  • (硬件实战)反激式开关电源设计避坑指南:从ME8115到量产的心路历程
  • C++虚拟线程实战:基于Boost.Asio构建百万级并发服务框架
  • OpenCore Legacy Patcher:突破苹果限制,让老旧Mac重获新生的终极解决方案
  • C++离散化技术详解:从原理到实战,解决大数据范围难题
  • LibYAML超全教程-C语言YAML解析与生成
  • Pico 4 Enterprise有线串流调试避坑指南:从Unity到SteamVR的稳定连接实践
  • 讯飞AI眼镜:实时跨语言协作的最佳硬件载体
  • 【finetuning】交叉编码器微调案例
  • 2026 年新消息:武汉可靠的12cr1movg合金钢管厂家哪家权威,高温高压下的生死一线:它为何能扛住极端工况? - 行业推荐官[官方】--
  • 2026年鄂西北选购优质保时捷机油批发商实用参考 - 热点品牌推荐
  • C#调用C++ DLL实战指南:P/Invoke原理、五大步骤与避坑技巧
  • Cocos Creator安卓打包全攻略:从环境配置到Release签名避坑指南
  • 智能快递地址解析API——从源头提高订单效率
  • 5G PDCP层安全机制详解:加密与完整性保护如何守护数据安全
  • 福建镀镍螺丝工厂选型指南 助力各行业对接优质紧固件供应商 - 热点品牌推荐
  • 2026年7月处理车/湖北车载污水处理设备供应商哪个好_深圳市九九八科技有限公司湖北分公司 - 品牌宣传支持者
  • 影刀RPA 异常处理的五种模式:try-catch之外的思路
  • 卫星编队飞行中CW方程与轨道根数法建模精度对比分析
  • 2026年7月湖北污泥干湿分离车/养殖场污泥处理车工厂口碑榜_深圳市九九八科技有限公司湖北分公司 - 行业平台推荐
  • AI数字人霹雳椒娃:从部署到实战的完整指南
  • VTK管线入门:从零开始用C++绘制并着色3D立方体
  • 实验09 基于Packet Tracer的RIPv2校园网互通实战配置
  • 基于ET框架的AI行为可视化调试面板设计与实现
  • OpenClaw v2.6.2本地版Windows一键部署教程