Unreal Python API 从零到入门
目录
- 前言
- Unreal Python API的使用 - 运行环境
- UE4 Python插件
- 安装UE4 Python脚本插件
- 运行脚本
- 打开output log
- 输入运行路径
- 编写脚本
- 在编写Python脚本中你应当谨慎注意的事情
- 授人与渔
- 再次跳入坑坑的API文档
- Google yyds
- 常用接口整理
- unreal.AssetData
- unreal.\_ObjectBase
- unreal.EditorAssetLibrary
- unreal.AssetRegistry
- unreal.GameplayStatics
前言
跨过山和大海。。。
好像也没有看到有人写这个文档
Unreal Python API的使用 - 运行环境
Winodws 10
Unreal Engine 4.23.1
UE4 Python插件
安装UE4 Python脚本插件
搜索script,安装图中标注好的两个插件
运行脚本
打开output log
输入运行路径
将cmd切换为Python,之后再输入你脚本的路径
这里我们创建一个test.py文件(如下代码)放在桌面
import unrealstr1 = unreal.AssetRegistryDependencyOptions(include_soft_package_references=True, include_hard_package_references=True,include_searchable_names=False, include_soft_management_references=False,include_hard_management_references=False)
asset_reg = unreal.AssetRegistryHelpers.get_asset_registry()arr = unreal.AssetRegistry.get_referencers('/Game/Assets/XX/XX', str1)print arr
路径为: C:\Users{你的用户名}\Desktop\test.py
在这里我的用户名为Bedivere, 所以我们输入
C:\Users\Bedivere\Desktop\test.py
编写脚本
在编写Python脚本中你应当谨慎注意的事情
- UE4自带的Python版本为2.7,你需要注意语法(比如print后面是不带括号的
- 直接复制UE4里的文件名可以获得为文件路径(但是文件名称会重复两次,有一些需要文件路径的方法在这里需要进行更改)
例如:
你复制的路径
‘/Game/AssetsXXXX/AAA.AAA’ (注意它打了两遍!!!
实际它需要
‘/Game/AssetsXXXX/AAA’
但有时他又只需要前者,所以巨**坑 - UE4 outputlog里cmd是只能使用UE4的cmd指令,执行外部的指令是没有的,例如cd C:\xxxxx
授人与渔
当编写Python脚本的时候会碰上各种各样的问题,这里介绍可以去找结果的途径
就拿我们这个脚本举例
需求是:找到这个文件的reference
所以我们在官方API文档里搜索get_reference
在这里我们就能看到api的用法,需要文件路径,以及配一个查找选项(范围)
路径我们直接Ctrl + C就可以解决,但对于后者我们需要再点进去查看如何配置
看到这里我们知道需要配置四个参数,所以我们写下了这行代码
str1 = cunreal.AssetRegistryDependencyOptions(include_soft_package_references=True, include_hard_package_references=True,include_searchable_names=False, include_soft_management_references=False,include_hard_management_references=False)
但运行后会报错
提示类型不对,应当为一个类
这里就是他很坑的地方,明明文档例子给的就是路径,但这里又说不行
这里我们就有两种途径去寻找解决方式
再次跳入坑坑的API文档
去按你觉得可能的想法搜, 比如get AssetRegistry
或者 path to AssetRegistry。但是这样挺靠缘分的(x)
英语水平和你对命名的了解程度(√)
我选择的是return AssetRegistry,看看什么方法能返回给我这样的一个对象
这里那个Helpers小帮手就很吸引我的眼球!
只需要点一下就可以转换 Done!
Google yyds
别问,问就是Ctrl+C Ctrl + V
常用接口整理
此处列举的类都是些基础类与实用类,类中的方法可用于复现编辑器中的操作或信息的获取,但由于数量较多无法一一列举,因此使用前请务必查看该类的官方文档,查找最适合需求的方法并使用。
unreal.AssetData
使用方式
# 路径请遵循虚幻路径格式,文件名需以.隔开后再写一遍
unreal.AssetData('/Game/test/XXX.XXX')
常用方法
- 获取资源对象 - get_asset()
# 最常用,获取对应资源的属性一般都要先获取对象
# 返回值类型为object,并包含了所属类的信息,如路径为Texture资源,则返回的object的类为Texture,可用于判断资源种类
import unreal
object = unreal.AssetData('/Game/test/XXX.XXX').get_asset()
print object# 执行结果输出
LogPython: <Object '/Game/test/XXX.XXX' (0x000001639781AC00) Class 'StaticMesh'>
unreal._ObjectBase
使用方式
# 所有对象类的基类,在获取到对象后,可以随意调用该类中的方法
常用方法
import unreal
object = unreal.AssetData('/Game/test/XXX.XXX').get_asset()# 获取对象的虚幻类
print object.get_class()# 执行结果输出
LogPython: <Object '/Script/Engine.StaticMesh' (0x000001639B17C400) Class 'Class'>
---------------------------------------------------------------------------------------------------------------
# 获取对象名称,即文件名
print object.get_fname()# 执行结果输出
LogPython: SM_Env_Bridge_006A
---------------------------------------------------------------------------------------------------------------
# 获取对象的绝对路径
print object.get_path_name()# 执行结果输出
LogPython: /Game/test/XXX.XXX
unreal.EditorAssetLibrary
使用方式
# 实用方法类,类中方法可直接静态调用,可执行ContentBrowser中的大部分功能,如创建、删除、复制、保存、重命名、获取tag信息等。
# 此处只列举几个基础的方法,使用时请查阅此类的官方文档,以获取能够满足需求的方法。
常用方法
import unreal# 删除asset,需传入资源路径作为参数,返回值为bool型,True则操作成功,False为失败
result = unreal.EditorAssetLibrary.delete_asset('/Game/test/XXX')# 删除目录,需传入目录的路径作为参数,返回值为bool型,True则操作成功,False为失败
result = unreal.EditorAssetLibrary.delete_directory('/Game/test')# 判断asset是否存在,需传入资源路径作为参数,返回值为bool型,True则操作成功,False为失败
result = unreal.EditorAssetLibrary.does_asset_exist('/Game/test/XXX')# 判断目录是否存在,需传入资源路径作为参数,返回值为bool型,True则操作成功,False为失败
result = unreal.EditorAssetLibrary.does_directory_exist('/Game/test')# 获取资源tag信息,需传入资源路径作为参数,返回值为包含tag信息的字典
info = unreal.EditorAssetLibrary.get_tag_values('/Game/test/XXX')
unreal.AssetRegistry
使用方式
该类用于获取asset相关数据,如asset间的关联与引用、asset查找、asset状态判定等。
使用此类需要从unreal.AssetRegistryHelpers类中获取,用法为unreal.AssetRegistryHelpers.get_asset_registry(),返回值类型即为unreal.AssetRegistry。
常用方法
- 获取引用到的资源 - get_dependencies(asset_path, dependency_options)
- 获取被哪些资源引用 - get_referencers(asset_path, reference_options)
import unreal# 参数,用于决定哪种类型的引用会输出到返回列表中
# 详情参考:https://docs.unrealengine.com/en-US/PythonAPI/class/AssetRegistryDependencyOptions.html#unreal.AssetRegistryDependencyOptions
options = unreal.AssetRegistryDependencyOptions(include_soft_package_references=True, include_hard_package_references=True, include_searchable_names=False, include_soft_management_references=False, include_hard_management_references=False)# 返回结果是该资源引用到的资源列表,需要注意的是参数中的路径格式,并非文件名写两次的格式,若填错则返回值为空
asset_list = unreal.AssetRegistryHelpers.get_asset_registry().get_dependencies('/Game/test/XXX', options)# 返回结果是应用该资源的资源列表
asset_list = unreal.AssetRegistryHelpers.get_asset_registry().get_referencers('/Game/test/XXX', options)
unreal.GameplayStatics
使用方式
gameplay实用方法类,直接静态调用类中方法即可。
常用方法
- 获取场景中某类的所有actor - get_all_actors_of_class(world_context_object, actor_class)
import unreal# 本方法需要两个参数,一个是场景资源的对象,一个是actor所属的类object_map = unreal.AssetData('level的object_path').get_asset()# 本例是获取场景中所有平行光actor,平行光class为unreal.DirectionalLight。actor_list = unreal.GameplayStatics.get_all_actors_of_class(object_map, unreal.DirectionalLight)
Unreal Python API 从零到入门相关推荐
- thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...
前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...
- 0基础学python难吗-零基础入门学习Python技术难不难?
原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...
- 零基础学python鱼c-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...
第一版 时光荏苒,一晃间,距离<零基础入门学习 Python>出版(2016年11月)已经过去两年多了,在这段时间里, Python 逐步走入了大家的视野,这门语言因其简洁的语法风格,在云 ...
- 零基础学python难吗-零基础入门学习Python技术难不难?
原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...
- 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版
Python pdf(零基础入门学习Python)是一款功能强劲专业实用的Python电子书籍.想要零基础入门学习Python?那就快试试绿色先锋小编推荐的Python pdf最新版下载使用.由作者小 ...
- 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)
小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...
- 量化投资python教程_零基础入门Python量化投资全套教程,30+经典教材打包送!暑期get新技能就靠它了!...
量化投资是指使用数理分析.编程.建模等方式,通过对样本数据进行集中比对处理,找到数据之间的关系,制定量化策略,并使用编写的软件程序来执行交易,从而获得投资回报的方式. 在如今的量化投资领域,已经有了无 ...
- 长短时记忆神经网络python代码_零基础入门深度学习(6) - 长短时记忆网络(LSTM)
无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...
- 零基础学python实战-Python3零基础入门到爬虫实战
购买福利 各位小伙伴可以加入QQ群获得课程课件图文资料,并且在群里面与其他小伙伴进行交流,QQ群请在购买成功后加小狮妹的QQ(3400982550)获取. 学习本基础课程后,小伙伴如果想要进一步进行实 ...
最新文章
- Java项目命名规范
- jsp静态导入和动态导入
- 08、MySQL—字符串型
- C++ 学习路线推荐
- c++:栈的基本操作+实例:迷宫求解
- 深入理解Hadoop YARN中的Container概念
- asp前端日历_asp显示日历效果
- Oracle12c安装出错
- www.sirim-global.com
- HTTPS之SSL处理过程,对此加密和非对称加密
- 杭电1998 奇数阶魔方
- java web数据库面试_数据库面试技巧,通过JDBC展示自己专业性,摘自java web轻量级开发面试教程...
- 2021 全国大学生电子设计竞赛题目
- WordPress中文插件 Erphpdown vip会员+推广提成+收费下载/查看内容+前端个人中心 银联/支付宝/微信支付/财付通/贝宝paypal[更新至v9.6.1]
- 【色彩管理】HSI色彩模式详解
- Vue - 搜索关键字标红高亮(用户输入关键词搜索后,在搜索结果的列表标题上匹配并标红加粗)怎么使内容文本标红高亮的最详细教程,Nuxt.js uni-app 也适用,搜索功能及搜索结果关键字高亮源码
- 【狂神说Java】Spring Boot笔记
- 如何VS Code打造成Java开发IDE?
- 时间序列预测——ARIMA
- Centos 进入recovery模式,单用户模式
热门文章
- 数据可视化查看2021城市GDP
- 每秒100W请求,携程如何支撑十一假期,抢票系统的?
- 以下关于python文件的描述_关于 Python 文件处理 , 以下选项中描述正确的是 : ( )_学小易找答案...
- 暗黑3服务器维护能登录,暗黑3登陆错误原因及解决办法详解
- h5移动端播放amr格式的音频文件兼容安卓IOS
- ② ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)】
- ecstore mysql_详解Ecstore中的数据表结构定义文件dbschema
- 网络应用技术师技能考试试题+讲解
- 019、冻结TXID
- 慕课网微信点餐系统之商品信息加载不出来解决方案