用VSCode调试Unreal Python
用Unreal有一段时间了,接触了Unreal中的Python,让我感到意外的是,不管Google还是百度,竟然没有一个人搭建过VSCode调试Unreal Python的环境,用Pycharm进行远程调试的倒是有一些。在网上能找到的都是怎么在VSCode中做Unreal Python API的提示,关于调试的一篇文章都没有,我这篇算的上全网第一篇了。本文章禁止转载,尤其是被转载到CSDN这些地方。Unreal很早就集成了Python,可以用Python做些自动化处理,也可以加个菜单项等等。从4.26之后,Unreal把内置的Python版本更改为Python3.77,本文做的测试是在UE5中进行的,用的Python版本也是3.77。
环境建议
一些前置的配置我就略过了,前置的配置有
[*]在UE中开启Python插件。
[*]在VSCode中配置Python开发环境。
为了能够让你的环境能和我一样,建议如下
[*]如果你的机器中装了Python,那么就卸载掉。
2. 把环境变量中的Python路径设置UE中的Python路径。类似下面这张图,具体的路径可以自己弄。为了不让VSCode环境变量认错,在用户和系统变量的Path都加入了Python路径。
为了不让VSCode认错,用户和系统的Path中都加入Python路径
设置自动提示
下面这些步骤是为了VSCode能够自动提示而设置的
[*]前往编辑器偏好设置(Editor Preferences)> 插件(Plugins)> Python,选择开发人员模式(Developer Mode),之后重新启动编辑器。生成的存根文件将位于(ProjectDirectory)/Intermediate/PythonStub。
2. 回到VSCode中,前往设置(Settings)> 扩展(Extension)> Python并找到自动完成:更多路径(Auto Complete: Extra Paths)。点击链接打开settings.json文件,将路径添加到python.autoComplete.extraPaths下的存根文件
把python.autoComplete.extraPaths和python.analysis.extraPaths都设置为../Intermediate/PythonStub这个相对路径。设置为相对路径的好处是不同的UE工程,可以共用一份全局的VSCode配置。
安装ptvsd
打开VSCode,在VSCode的内置终端中输入python -m pipinstall --upgrade ptvsd 。不出什么意外的话将会在Unreal的Python路径下面找到ptvsd
如果你的Unreal安装在C盘Program Files下面,那么ptvsd 有很大可能因为权限问题而没法安装,这种情况我是没整过,只能自己看着办了。
添加调试文件
回到你的Unreal工程,工程根目录下面建一个Python目录
把这个Python目录拉到VSCode中,作为VSCode的工作空间,并在Python目录下面建一个名为pyued.py的文件,名字随便取的,意思是python unreal debug的意思。并且在这个Python文件中输入如下Python代码
import ptvsd
ptvsd.enable_attach(address =('127.0.0.1',5678))
print("ptvsd.enable_attach execute")
最终结果如下
这边会用5678这个端口作为调试端口,如果这个端口被占用了,那么就换一个。
在UE中设置Python的启动路径
回到UE,前往项目设置(Project Settings)> 插件(Plugins)> Python 中。
在Startup Scripts 填写 pyued.py
在Additional Paths选择类似这样 ../../../../unreal/ActDemo 5.0/Python ,不同的项目选择出来结果不一样。Additional Paths是有文件选择框选择的。
弄好之后重启UE。如果你在UE的日志中看到ptvsd.enable_attach execute,那么恭喜你离成功只差一步了
VSCode调试配置
回到VSCode中,按下面方式弹出这个这个添加配置按钮,然后点击
选择远程连接
直接按默认的就可以
直接用默认的就可以
一路Enter下来之后,会在launch.json中出现下面配置
最后把上面配置中的remoteRoot也改为${workspaceFolder}
测试
VSCode的调试配置完成之后,就建一个名为test.py的文件,就只有 一行代码,在这一行代码打个断点。
如果没启动UE工程的话,启动下UE工程,然后切回到VSCode中,在调试那边选择远程连接
按下F5进行调试,不出什么差错的话,可以看到VSCode调试启动成功了。
回到UE中,在UE的Python输入中输入test.py,然后回车执行
这个时候回到VSCode中,会发现VSCode断点已经命中了
至此,已经完成了调试所需的所有步骤。 写得很详细[拜托] 赞,收藏了
页:
[1]