Unity Console 打开 Lua 文件
文章目录
介绍
实际开发过程中,经常需要调试 C# 代码,之前推荐过一款插件 Unity 插件推荐:Console Enhanced Pro 可以用来双击调用堆栈跳转到对应的 C# 文件。
而现在很多项目使用 Lua 开发,也需要双击 Lua 调用堆栈跳转到对应的 Lua 文件。
Console Enhanced Pro 默认并不支持此功能,不过插件本身提供了扩展,可以修改双击之后的行为,因此这里介绍一下如何实现此功能。
方法
提取路径与行号
xLua 与 ToLua 都可以通过 CustomLoader 之类的方式修改加载的文件路径,最后获得的调用堆栈大概类似下面的输出:
|
|
从中可以看到文件路径在中间、行号在后面,使用正则表达式提取。
将路径与行号传递给编辑器就可以实现打开文件并跳转到指定行号。
打开编辑器
Unity 默认程序
使用默认的 External Script Editor 打开文件
|
|
扩展名关联程序
使用文件扩展名关联的程序打开文件
|
|
自定义进程路径
使用进程打开其他编辑器,需要创建一个新的编辑器进程。
配置
使用 ScriptableObject 定义配置,可以方便配置。 使用枚举选择打开文件的方式,填写第三方程序路径,并支持字符串格式化配置。
环境
- Windows 7 + Unity 5.6.6f2 + Intellij Idea 2019.2 + xLua
- Windows 10 + Unity 2018.4.28f1 + Intellij Idea 2021.2 + ToLua
逻辑上来说也支持 macOS,不过需要测试一下。
使用方法
执行 Tools/ConsoleE/Create Option
创建配置文件 Assets/Editor/ConsoleE_LuaExtensions/ConsoleE_Extensions_Option.asset
。
工具提供三种打开文件方式:
- Unity 指定的编辑器
- 扩展名关联的可执行文件
- 自定义程序路径与打开参数
默认情况下使用 Unity 设置中指定的编辑器打开文件。
默认配置是 Idea 的配置,根据实际的路径修改 Idea 可执行文件路径。
LuaPathPattern
需要根据项目实际路径修改。
多工程支持
When you specify the path to a file, IntelliJ IDEA opens it in LightEdit mode, unless it belongs to a project that is already open or there is special logic to automatically open or create a project (for example, in case of Maven or Gradle files).
默认情况下开启多个 Idea 时,会自动在已打开此文件所在工程的 Idea 窗口中打开此文件。
其他编辑器需要看看文档,了解如何设置类似的行为。
焦点激活问题
在使用自定义程序路径与打开参数时,新启动的程序是否会获得焦点与操作系统有关:Windows 7 默认行为是启动进程后新进程获得焦点,Windows 10 的逻辑修改为任务栏中图标会闪烁。
大概有几种可行的方案:
- 编辑器自己提供获得焦点的选项,好像大部分都没提供(Idea 2021.2 中没有此选项)。类似的功能如断点时获取焦点。
- 看看 Unity 内部是如何实现的。
- 在 Windows 下获取焦点本质上是向窗口发送消息,那么需要编写代码实现获取当前打开文件的窗口,然后向其发送消息。