原因
以 C# 源码形式放在 Unity 工程中,那么打印日志的时候,双击 Console 窗口里面的日志行信息,就会自动定位到 Visual Studio 所在的文件和行数。
但是,以 DLL 形式放在 Unity 工程的话,就无法快速定位打开所在的文件和行数。
解决
借助第三方插件 Editor Console Pro
,扩展它的功能,判断双击日志行信息的时候,当文件处于非 Unity 工程中的话,则打开外部工程来定位。
扩展配置界面:
C# 文件
外部 C# DLL 工程,使用 Visual Studio 打开,需要安装过Microsoft Visual Studio Tools for Unity
,才能发送定位文件消息。
自 Unity 5.2 开始,已经集成了这个插件,那么只要反射 Unity 所加载的SyntaxTree.VisualStudio.Unity.Bridge.dll
,发送定位文件消息即可。
但是,首先得对代码工程*.csproj
文件,添加一条配置项:
<ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
添加在第一个<PropertyGroup>
节点之下。这样才能使得VSTU
可以通过UDP发送消息命令。
要注意的一点,加上这个配置项,可能导致工程项目的属性窗口无法打开。
使用的时候,在配置界面,配置外部 DLL 工程解决方案的路径。那么在 Console Pro 3 窗口里双击日志行信息的时候,就会自动打开定位到外部 DLL 工程。
Lua 文件
嵌入 Lua 工程,在 Lua 脚本中打印日志,日志格式为:
15:7:2.333-0: [F:/Svn/Resource/Assets/Lua/tolua.lua:10]:msginfo
那么可以通过设置,来指定双击日志行信息的时候,用 ZeroBrane Studio 打开文件,或者用 Sublime Text 打开文件。
忽略自定义日志类
日志包装类封装了Debug.Log
,打印日志的时候,在堆栈最顶层都是日志包装类信息,不方便定位到上层调用的位置。
插件Editor Console Pro
支持配置忽略自定义日志类在堆栈上显示。在配置界面,Ignore
页面里,添加一条 Ignore stack entries
记录,类名填入包装类名称即可,如下所示:
应用之后,再看日志,便可一眼清晰,如下所示: