使用Python扩展Unity编辑器
Unity官方发布过一个 Python Scripting 包,为Unity Editor增加了Python脚本支持,不过官方似乎已经不再维护这个包了,最近恰好有空,便试着对这个包做了些扩展。
扩展后的插件包地址:Github - Python Scripting
事先声明:我不熟Python,对package的扩展手法不一定最优,欢迎指正!
使Python IDE支持提示Unity/C# API
没有Python Stubs(存根)时,Python IDE在编写Python代码时无法弹出代码补全提示,也没法查看函数参数。
有无存根的对照(左有,右无):
新增的 PythonStubsGenerator
类实现了生成Python Stubs的功能。通过Unity Editor菜单项 Tools/Python Scripting/Re-Generate Stubs 可以针对当前项目的所有C# API生成存根。生成的存根文件保存在 <PROJECT_ROOT>/Library/PythonScripting/stubs 文件夹中。
生成存根后,还需要在Python IDE中添加配置。以VSCode为例,需要在Python代码文件夹中创建 .vscode 文件夹,并添加 settings.json 文件,内容如下:
注意:此示例中,Python代码文件夹位于Unity项目根目录中,故使用了相对路径
"../Library/PythonScripting/stubs"
。
{"python.analysis.extraPaths": ["../Library/PythonScripting/stubs"],"python.analysis.stubPath": "../Library/PythonScripting/stubs","python.analysis.autoSearchPaths": true,"python.analysis.useLibraryCodeForTypes": true,"python.analysis.typeCheckingMode": "basic","python.languageServer": "Pylance"
}
使用Python代码制作Editor Window
放着好好的C#不用,反而去写Python,自然是因为项目大了以后,C#的编译耗时太久了。如果能用Python来编写Editor Window,就可以省去编译时间,再也不用在调整工具窗口内容时苦苦等待了!
新增的 PythonEditorWindow
类定义了一些回调接口,在Python侧注册这些回调,即可调用Unity API完成Editor Window的绘制。
在Python Manager窗口中,找到Python Scripting包,导入Python Editor Window示例,然后在Unity Editor菜单项 Samples/Python Scripting/Editor Window 中可以打开示例窗口。
导入后的相关示例代码位于 Assets/Samples/Python Scripting/<PYTHON_SCRIPTING_PACKAGE_VERSION>/Python Editor Window/Editor 文件夹中(注意替换版本号)。
Python脚本浏览器和执行工具
写好了Python工具脚本后,还需要有一个快捷浏览和执行这些脚本的工具。
新增的 Python Scripts 窗口就是做这个的,它可以通过Unity Editor菜单项 Tools/Python Scripting/Python Scripts Window 打开。
首先需要在Project Settings中设置Python脚本的存放文件夹:
然后打开Python Scripts窗口,就可以看到所有Python脚本了:
左侧列表的第一个项目永远是 Script Editor ,选中此项时,可以直接在右侧输入Python代码,然后点击 Execute 按钮执行Python代码。
后续项目则对应着Project中Python脚本的目录结构,点击项目项时,可以预览脚本内容,同样可以点击 Execute 按钮执行Python代码。