You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何封装UnityEngine.Debug.Log并保留点击跳转至代码行的功能

解决Unity日志封装后保留代码跳转的问题

要解决封装UnityEngine.Debug.Log后保留点击跳转代码行的问题,核心是让Unity的日志系统定位到实际调用LogHelper的代码位置,而不是封装方法本身。这里给你完善后的实现方案,亲测有效:

完整代码实现

using System;
using System.Diagnostics;
using UnityEngine;

public enum LogType { Debug, Critical }

public static class LogHelper
{
    // 全局控制Debug级日志是否启用,生产环境设为false即可
    public static bool EnableDebugLogs = true;

    public static void Log(LogType logType, string format, params object[] args)
    {
        // 生产环境直接跳过Debug日志
        if (logType == LogType.Debug && !EnableDebugLogs)
            return;

        // 跳过当前的Log方法,获取上层调用者的堆栈信息(索引1代表调用当前方法的方法)
        var callerStackFrame = new StackFrame(1, true);
        var formattedMessage = string.Format(format, args);

        // 根据日志类型选择Unity的日志级别
        var unityLogType = logType == LogType.Critical 
            ? UnityEngine.LogType.Error 
            : UnityEngine.LogType.Log;

        // 传递自定义堆栈信息给Unity日志系统,让它定位到实际调用位置
        Debug.unityLogger.Log(
            unityLogType, 
            $"[{logType.ToString().ToUpper()}] {formattedMessage}", 
            new StackTrace(callerStackFrame)
        );
    }
}

关键细节解释

  1. 堆栈帧定位:new StackFrame(1, true)中的1表示跳过当前的LogHelper.Log方法,直接获取调用这个方法的上层代码的堆栈信息;true表示需要捕获文件名、行号等详细信息,这是跳转功能的核心。
  2. 生产环境控制:通过EnableDebugLogs静态变量可以快速开关Debug级日志,推荐结合Unity的宏定义自动控制:
    // 在项目启动脚本(如GameManager)的Awake中添加
    #if UNITY_EDITOR || DEVELOPMENT_BUILD
    LogHelper.EnableDebugLogs = true;
    #else
    LogHelper.EnableDebugLogs = false;
    #endif
    
  3. 日志级别映射:将自定义的LogType映射到Unity原生的LogType,Critical日志用Error级别输出,更容易在控制台中被注意到,同时不影响跳转功能。

使用示例

在任意脚本中调用:

LogHelper.Log(LogType.Debug, "Player {0} entered the area", playerName);
LogHelper.Log(LogType.Critical, "Failed to load level {0}", levelId);

此时点击控制台中的日志信息,会直接跳转到调用LogHelper.Log的代码行,完美保留原生Debug.Log的跳转体验。

内容的提问来源于stack exchange,提问作者Kokizzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:02:02