前言

众所周知,在使用Unreal游戏引擎进行游戏制作时,一般使用强大高效的C++和BluePrint蓝图进行开发,而传统的各大cg软件则更青睐于Python的简单易用,因此Unreal也顺应民意加入了对Python的支持。

在复杂的工作流程中经常要配合其他软件进行资产文件的流程化处理,还是统一使用Python会更加方便,因此今天就来水一下在UE4中使用Python开发的步骤和技巧。

 

使用步骤

在UE4中使用Python需要先开启以下三个插件。

启用插件后需要重启引擎才能使用。

默认情况下UE4.25及之前的版本中自带的Python版本为2.7,路径在Engine\Binaries\ThirdParty\Python\Win64,而UE4.26及以后的版本自带的Python版本为3.7,路径在Engine\Binaries\ThirdParty\Python3\Win64,当然UE4.25也是可以升级到Python3使用的,方法参考这里

通过编辑器的Window-Developer Tools-Output Log菜单命令可以打开Output Log窗口,在此窗口左下角将默认的cmd改为Python,然后就可以输入Python代码进行运行了。

如上图所示,直接import unreal这个UE4内置的库,即可通过Python实现大多数编辑器本身的功能。

如果需要输入多行代码,则按几次Shift+回车,可以将编辑框变大,用于编辑和运行代码段更为方便。

之所以说是大多数,是因为Python可以使用C++ 公开到蓝图的功能,换句话说,如果要使用的功能未公开的话,还是得先使用C++公开再调用,因此到底是离不开C++的。

具体的APi可以查看Unreal Python的官方文档

 

Python的插件设置

Python插件的设置在Edit-Project Settings菜单命令中的Python一栏,其中Startup Script可以设置多个自启动脚本,可以在启动工程时自动运行。

而Additional Paths则可以添加多个Python的查询路径,方便使用相对路径引入查询路径下的第三方库或资源。

Unreal的Python默认可以支持以下四个查询路径:

  • 项目的Content/Python/
  • 引擎的Content/Python/
  • 插件的Content/Python/
  • Windows系统的Documents/UnrealEngine/UnrealEngine/。

当然除了插件设置以外也可以通过sys.path添加查询路径。

 

其他运行方式

除了在Output Log窗口中直接编写运行Python代码以及在Python插件设置中设置自启动脚本这两种方式以外,还有其他方式运行Python脚本。

 

在编辑器中直接运行.py脚本文件

方法很简单,像"D:\test\test,py"这样直接输入py脚本的路径运行即可。或者在Output Log窗口中调整左下角模式到Cmd模式,然后通过py "D:\test\test,py"的形式直接运行py脚本。

 

查询路径中的init_unreal.py脚本

上面说的四个默认支持的查询路径下,如果存在名为init_unreal.py的文件,则编辑器启动时会自动运行该文件。

 

在启动编辑器时运行脚本

这种方式与Python插件设置中设置自启动脚本类似,启动编辑器后打开工程的默认关卡并运行Python脚本。通过命令行参数方式实现,如下:

UE4Editor-Cmd.exe MyProject.uproject -ExecutePythonScript = "D:\test\test.py"

 

只运行脚本不启动编辑器

这种方式不会启动编辑器界面,因此运行速度非常快,但要注意的是,脚本某些功能可能不能正常使用,例如在关卡中操作物体或资产等。命令行参数如下。

UE4Editor-Cmd.exe -run = pythonscript -script = "D:\test\test.py"

 

在PyCharm中支持unreal库的代码补全

UE4中的Output Log窗口毕竟只是用来执行和测试简单代码的,真要开发具体的功能还得用专业的IDE才行。

而unreal作为第三方库,里面的代码自然是不会自动提示和补全的,可以通过以下操作实现。

首先需要导出unreal的代码库,在上面的Python插件设置中有一个Developer Mode没有介绍,这里就可以用上了。

开启此项然后重启编辑器后,可以看到日志提示工程路径下的Intermediate\PythonStub文件夹中生成了一个unreal.py这个文件,这就是导出的unreal库。

然后将这个unreal.py文件放到PyCharm的工程下,再import unreal导入到正在开发的脚本中,不过这个时候还是没有代码提示与补全的。

这是因为导出的unreal.py体积较大,将近13Mb,PyCharm不会完全读取,需要通过设置PyCharm的自定义属性方式放宽这一限制。

执行此菜单命令后会创建一个名为idea.properties的配置文件,在其中写入以下信息idea.max.intellisense.filesize=20000

做完上述设置之后,再点击 File -> Invalidate Caches / Restart...菜单,然后点击 Invalidate and Restart按钮清空重建索引,并自动重启。

这样就有代码补全和提示了,只是这仅仅只是提示,在PyCharm中不能直接运行该脚本,还是得在UE4中运行和调试。

 


书上说,天下没有不散的筵席;
别怕,书上还说,人生何处不相逢。

《雪中悍刀行》
——烽火戏诸侯