找回密码
 立即注册
查看: 379|回复: 0

Unreal Python工具开发【1】: Quick Start

[复制链接]
发表于 2022-8-3 20:21 | 显示全部楼层 |阅读模式
作者 @ocarina 2022-07-18
首先介绍Unreal Python工具开发的入手方法,和开发中遇到的常用的开发模块API。适应项目中的需求变化进行快速开发。同时会独立整理涉及到的软件工程、计算机语言设计等相关知识。
目录

快速启动python开发环境
Part1:蓝图控件调用脚本
Part2:拓展编辑器菜单入口
Part3:启动自动加载
Part4:UI管理
快速启动Python开发环境

开发工具:VsCode + Unreal Engine
注意事项:
文档编写所用引擎版本Unreal4.27\Unreal5.0 Unreal默认支持Python 版本为Python3.7.7 Unreal Python工具不支持游戏Runtime运行启动插件:
Editor Scripting Utilities Python Editor Script Plugin
官方启动文档:Unreal Scripting the Editor using Python
官方Python API文档:Unreal Python API

快速调用Python工具:

内容适宜范围:不熟悉UE python开发,希望快速在引擎内组织、调用python脚本测试,想要了解UE提供的接口。
python工具我们将通过制作Plugin Module (UE模块参考文档:Modules)形式接入引擎。这样可以在启动引擎时编译你的工具,并将开发的工具以插件的形式接入引擎,有较好的通用性,开发、使用和发布上更方便。
在虚幻引擎中有很多中方法调用脚本(见文档),考虑到开发迭代和易上手的需要,本文将围绕两种方法进行介绍:
蓝图控件调用本地脚本编辑器调用
蓝图:使用蓝图控件调用python,优点是插件可以完全通过蓝图脚本来制作交互界面和组织交互逻辑、非常快捷地进入测试开发。 对于熟悉蓝图、不熟悉UE接口的开发者大概需要10分钟就可以解决前期工
作,快速入手。 编辑器调用: 通过编辑器接入引擎,使用更加便利、同时支持独立窗口(Qt)、需要编写逻辑入口。如果有C++插件开发经验,也可很快接入,用Python减少开发的工作量。

Part1:蓝图控件调用脚本


  • 在引擎中创建Plugin插件。类型选择ContentOnly


2.本项目插件名:Upg_Python 创建插件后重启引擎勾选Enabled插件


3.目录层级结构
Content
Python 管理Python脚本
Blueprint 管理蓝图脚本

4.在Blueprint文件夹中创建控件 蓝图类Userwidget Widet Editor8.
5.在Python文件夹中创建 测试用脚本: run.py
# an python example
print('Run Python Script')

6.编写蓝图脚本
蓝图逻辑 需要编写的逻辑非常简单,主要包括 获取路径和执行两部分。Project plugin dir获取插件目录,Excute python command节点可以执行py指令,执行python语句或者python文件


蓝图函数





GUI 简单制作一个调用按钮和文本框输入执行的python脚本名称。


7.快速执行 右键蓝图执行Run Editor Uitility Widget,启动插件窗口,在输入栏中填写测试用脚本名"run",
点击运行。 可以看到引擎Outputlog中成功打印"hello"字样。




8.至此我们完成了一行python指令的调用。我们可以基于此蓝图工具作为调用接口提供给引擎用户,组织更复杂的python插件。
py "E:/Local_Project/Rigging_Ex/Plugins/Upg_Python/Content/Python/run.py"

9.Tips UE框架中通常包含U和F前缀的类,我们查阅源码时,U开头的类、方法一般都有对应的蓝图和Python接口调用。蓝图能够调用的节点python也会有对应的方法实现。
在Python中获取工程中各种路径的指令:unreak.path

10.Unreal提供了unreal模块获取所有的接口 使用方法也非常简单:
# Python 文件中导入Unreal模块
import unreal
# 查找文档创建所需模块的类实例
unreal_object = unreal.unreal_class() # 调用对应方法
unreal_object.unreal_function()
Unreal的接口丰富且完善,基本上继承于UObject的C++类实现均有对应的Python接口,对引擎陌生的开发者可以通过这种方式简单甄别是否可以使用Python API的方式对操作的引擎模块进行开发,提高开发效率。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 06:38 , Processed in 0.089395 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表