UE4从4.22版本开始正式集成了对Python脚本的支持,也就是说你可以直接在Unreal Engine编辑器或者通过命令行来运行Python脚本,完成自动化任务、工具开发、数据处理等。

具体说明

  1. Python集成内置在UE4中
    UE4内置了Python解释器绑定,无需额外安装第三方Python环境(默认是基于Python 2.x / 3.x不等,版本随引擎版本变化)。高级用法也可以自定义Python环境。

  2. 编辑器内直接运行Python脚本
    在UE4编辑器的“命令行窗口”或“输出日志”中都能输入Python命令,或者通过菜单调用Python脚本执行。

  3. 通过命令行运行Python脚本

    UE4Editor-Cmd.exe 项目.uproject -run=pythonscript -script="脚本路径" -log=日志文件

    这是官方支持的运行Python脚本方式,用于自动化构建、批量资源处理、本地化导出、批量修改关卡蓝图等。

  4. 适用范围和用途

    • 自动导入/导出数据(比如字符串表导出CSV)
    • 自定义编辑器工具开发。在C++中通过Python API调用Python脚本,利用FPythonScriptPlugin提供的接口,UE本身的代码可以动态地启动和交互Python环境
    • 资源批量处理、检测
    • 自动化构建流程
    • 测试脚本等
  5. 需启用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读写这些文件。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐