UE运行Python脚本
UE4从4.22版本开始正式集成了对Python脚本的支持,也就是说你可以直接在Unreal Engine编辑器或者通过命令行来运行Python脚本,完成自动化任务、工具开发、数据处理等。
具体说明
-
Python集成内置在UE4中
UE4内置了Python解释器绑定,无需额外安装第三方Python环境(默认是基于Python 2.x / 3.x不等,版本随引擎版本变化)。高级用法也可以自定义Python环境。 -
编辑器内直接运行Python脚本
在UE4编辑器的“命令行窗口”或“输出日志”中都能输入Python命令,或者通过菜单调用Python脚本执行。 -
通过命令行运行Python脚本
UE4Editor-Cmd.exe 项目.uproject -run=pythonscript -script="脚本路径" -log=日志文件这是官方支持的运行Python脚本方式,用于自动化构建、批量资源处理、本地化导出、批量修改关卡蓝图等。
-
适用范围和用途
- 自动导入/导出数据(比如字符串表导出CSV)
- 自定义编辑器工具开发。在C++中通过Python API调用Python脚本,利用
FPythonScriptPlugin提供的接口,UE本身的代码可以动态地启动和交互Python环境 - 资源批量处理、检测
- 自动化构建流程
- 测试脚本等
-
需启用Python插件
在UE4编辑器中,需要打开“编辑” → “插件” → 搜索并启用“Python Editor Script Plugin”和“Editor Scripting Utilities”等相关插件,才能使用Python集成功能。
实例
实现将UE里面的StringTable都导出来,导出.csv文件
命令行
"../../../../UnrealEngine/Engine/Binaries/Win64/UE4Editor-Cmd.exe" ../../../../MyGame/MyGame.uproject -run=pythonscript -script="../../../../Conf/Language/Script/ExportStringTableToCSV.py" -log=ExportStringTableToCSV.log
脚本实现
ExportStringTableToCSV.py脚本实现代码
import unreal
import os
import sys
def export_string_table_to_csv():
stringtable_dir = os.path.abspath(os.path.join(PythonRootDir,"../../../../MyGame/Content/DataTables/Localization"))
output_dir = os.path.abspath(os.path.join(PythonRootDir,"../../../../Excel/Conf/Language"))
list_dirs = os.walk(stringtable_dir)
for root, dirs, files in list_dirs:
for file in files:
file_path = os.path.join(root, file)
#除了ExcelConfigStringTable外都导出来
if ("uasset" in file_path) and ("ExcelConfigStringTable" not in file_path):
basename = os.path.basename(file_path)
strarr = basename.split(".")
basename = strarr[0]
output_filename = os.path.join(output_dir, basename + ".csv")
strarr = file_path.split("Content")
file_path = "/Game" + strarr[1]
file_path = file_path.replace("\\", "/")
strarr = file_path.split(".")
file_path = strarr[0]
stringtable = unreal.load_asset(file_path)
unreal.PythonFunctionLibrary.export_string_table_to_csv(stringtable, output_filename)
print ("CSV file export: " + output_filename)
if __name__ == '__main__':
print("3--------------------------ExportStringTableToCSV.py-----------------")
PythonRootDir = os.path.dirname(os.path.abspath(__file__))
export_string_table_to_csv()
脚本分析
import unreal
导入unreal模块
- Unreal Engine在启动Python环境时,会加载一套包含C++到Python的绑定(通常是通过PyBind或类似技术实现)
unreal模块就是 Epic Games 为 Unreal Engine 提供的 Python API 模块,可以直接调用C++的函数和访问引擎对象,用于让开发者用Python脚本操作和扩展UE编辑器及其功能。- 这个模块不是Python标准库的一部分,也不是任何第三方包,而是由UE引擎自身内置或通过插件提供的绑定接口。
unreal 模块包含什么?
- Unreal Engine 的Python API,封装了大量的 引擎核心功能和编辑器功能。
- 里面定义了很多类(Classes)、枚举(Enums)、函数(Functions)、结构体(Structs)等,封装了引擎的C++功能供Python调用。
| 类/模块名 | 主要功能描述 | 常用用途示例 |
|---|---|---|
| 核心类 Core Classes | ||
unreal.EditorLevelLibrary | 提供关卡编辑和操作相关的静态函数 | 获取关卡中Actor、选中对象、动态生成Actor等 |
unreal.AssetToolsHelpers | 资产创建、复制、重命名等资产管理工具的辅助接口 | 创建新材质、复制资源、重命名资源 |
unreal.SystemLibrary | 一些系统级通用函数,如输出日志、获取系统信息 | 打印日志、获取平台类型、执行脚本流程控制 |
| 资源相关 Resource Classes | ||
unreal.StaticMesh | 静态网格资源,3D模型的基本资源类型 | 访问网格数据、修改网格属性、导出网格 |
unreal.Material | 材质资源类型,控制物体表面外观 | 创建材质实例、修改材质参数、加载材质 |
unreal.StringTable | 本地化字符串表资源,存储多语言的字符串集合 | 读取和编辑项目本地化字符串、导出导入CSV |
| 编辑器UI交互、任务管理、日志 | ||
unreal.EditorUtilityWidget | 用于创建自定义编辑器UI窗口(蓝图或Python绑定) | 定制工具面板、构建交互界面 |
unreal.TaskGraphInterface | 任务调度接口,可管理多线程任务 | 创建异步任务、优化长时间执行任务 |
unreal.log (函数) | 引擎日志输出函数 | 在输出日志窗口打印信息、调试脚本 |
| 工具库 Utility Libraries | ||
unreal.PythonFunctionLibrary | 提供对字符串表导出、导入等常用Python辅助工具函数 | 导出字符串表到CSV、运行Python代码扩展功能 |
unreal.EditorAssetLibrary | 编辑器下资产管理和查询相关函数 | 资产筛选、删除、重命名、导入资源 |
stringtable = unreal.load_asset(file_path)
unreal.PythonFunctionLibrary.export_string_table_to_csv(stringtable, output_filename)
从指定的路径加载一个UE资源(Asset)到Python变量中,加载成功后返回对应的资源对象,这里赋值给 stringtable 变量,类型是 unreal.StringTable 或其子类
然后调用了 Unreal 引擎 Python API 中的一个函数,名字是 export_string_table_to_csv,通常是用来把 UE4 的本地化 字符串表(String Table) 导出成 CSV 文件,方便本地化或多语言团队编辑字符内容,或做版本控制、数据共享。
值得一提的是,我们一般通过UE脚本导出json/csv,会再用普通Python读写这些文件。
更多推荐



所有评论(0)