franciscochonge 发表于 2021-12-16 14:10

用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断点已经命中了


至此,已经完成了调试所需的所有步骤。

ChuanXin 发表于 2021-12-16 14:19

写得很详细[拜托]

Arzie100 发表于 2021-12-16 14:24

赞,收藏了
页: [1]
查看完整版本: 用VSCode调试Unreal Python