【Unity3D】解决封装Debug后双击日志跳转位置不正确问题

测试环境:windows10 vs2017 unity2019.4.0f1 

 以GameFramework框架为例说明,在GF框架中我将.dll的源码拖到了工程里,导致跳转位置是封装代码行而并非真正我想跳转到的打印处。
解决方法:将日志部分代码重新打包成dll即可,具体操作如下列。

Load lua script 'LuaConfig.lua' OK.
UnityEngine.Debug:Log(Object)
UnityGameFramework.Runtime.DefaultLogHelper:Log(GameFrameworkLogLevel, Object) (at Assets/ThirdResources/UnityGameFramework/Scripts/Runtime/Utility/DefaultLogHelper.cs:32)
GameFramework.GameFrameworkLog:Info(String, Object) (at Assets/ThirdResources/GameFramework/Base/Log/GameFrameworkLog.cs:171)
UnityGameFramework.Runtime.Log:Info(String, Object) (at Assets/ThirdResources/UnityGameFramework/Scripts/Runtime/Utility/Log.cs:143)
StarForce.ProcedurePreload:OnLoadLuaScriptSuccess(Object, GameEventArgs) (at Assets/GameMain/Scripts/Procedure/ProcedurePreload.cs:189)
GameFramework.EventPool`1:HandleEvent(Object, GameEventArgs) (at Assets/ThirdResources/GameFramework/Base/EventPool/EventPool.cs:264)
GameFramework.EventPool`1:Update(Single, Single) (at Assets/ThirdResources/GameFramework/Base/EventPool/EventPool.cs:75)
GameFramework.Event.EventManager:Update(Single, Single) (at Assets/ThirdResources/GameFramework/Event/EventManager.cs:68)
GameFramework.GameFrameworkEntry:Update(Single, Single) (at Assets/ThirdResources/GameFramework/Base/GameFrameworkEntry.cs:29)
UnityGameFramework.Runtime.BaseComponent:Update() (at Assets/ThirdResources/UnityGameFramework/Scripts/Runtime/Base/BaseComponent.cs:227)

上述日志,想跳转到的地方是ProcedureProload.cs:189行,而不是DefaultLogHelper.cs:32行。为此我们要将下面的内容封装成dll来使用。 

创建一个类库工程,拷贝如下几个文件到工程里生成DLL拷贝至Unity Plugins文件夹下。

UnityGameFramework/Scripts/Runtime/Utility/DefaultLogHelper.cs
Assets/ThirdResources/GameFramework/Base/Log/GameFrameworkLog.cs
UnityGameFramework/Scripts/Runtime/Utility/Log.cs

以及它们所依赖的GameFrameworkLog.ILogHelper.cs 和 GameFrameworkLogLevel。

一共5个文件,会有报错,但很轻松就能解决,生成dll后导入Unity Plugins里之前,我们要做的是把这5个在Unity的源文件都删除掉,不然会冲突。之后去到BaseComponentInspector.cs代码增加一行内容,对logHelperTypeNames 列表对象,添加  typeof(DefaultLogHelper).FullName 成员,接着去到Hierarchy面板 搜索Builtin名称物体(或搜t:BaseComponent)找到它身上的Base组件 修改它的Log Helper选中为我们的Log Helper 即UnityGameFramework.Runtime.DefaultLogHelper 即可。

注意类库必须不低于3.5 Net Framework版本。

之后你会看到这样的日志就能正常直接跳转到我们想要跳转到的代码行了!

Load lua script 'Utility/Log.lua' OK.
UnityEngine.Debug:Log(Object)
UnityGameFramework.Runtime.DefaultLogHelper:Log(GameFrameworkLogLevel, Object)
GameFramework.GameFrameworkLog:Info(String, Object)
UnityGameFramework.Runtime.Log:Info(String, Object)
StarForce.ProcedurePreload:OnLoadLuaScriptSuccess(Object, GameEventArgs) (at Assets/GameMain/Scripts/Procedure/ProcedurePreload.cs:189)
GameFramework.EventPool`1:HandleEvent(Object, GameEventArgs) (at Assets/ThirdResources/GameFramework/Base/EventPool/EventPool.cs:264)
GameFramework.EventPool`1:Update(Single, Single) (at Assets/ThirdResources/GameFramework/Base/EventPool/EventPool.cs:75)
GameFramework.Event.EventManager:Update(Single, Single) (at Assets/ThirdResources/GameFramework/Event/EventManager.cs:68)
GameFramework.GameFrameworkEntry:Update(Single, Single) (at Assets/ThirdResources/GameFramework/Base/GameFrameworkEntry.cs:29)
UnityGameFramework.Runtime.BaseComponent:Update() (at Assets/ThirdResources/UnityGameFramework/Scripts/Runtime/Base/BaseComponent.cs:227)

好了就这样。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值