在UE中使用Python设置枚举类属性值的问题

目标

在UE编辑器中使用Python设置枚举类属性值会遇到些问题,本篇记录了这些问题的解决方法。

1. 设置数值类属性值

先在编辑器中选择一个Actor,然后运行下面Python代码:

actor = unreal.EditorLevelLibrary.get_selected_level_actors()[0]
actor.set_editor_property("InitialLifeSpan",0.369)

即可设置此属性:
在这里插入图片描述
你也许不知道准确的属性名字 “InitialLifeSpan” 如何得到,毕竟编辑器中显示的名字带有空格。对于Actor的属性,可以参考【附录1】中的方式查看属性名。

2. 设置枚举类属性值(枚举类定义在C++代码里)

对于枚举类型的属性,下面脚本

actor.set_editor_property("SpawnCollisionHandlingMethod",unreal.SpawnActorCollisionHandlingMethod.ADJUST_IF_POSSIBLE_BUT_DONT_SPAWN_IF_COLLIDING)

将会设置:
在这里插入图片描述
脚本里的 “unreal.SpawnActorCollisionHandlingMethod.ADJUST_IF_POSSIBLE_BUT_DONT_SPAWN_IF_COLLIDING” 其实是 unreal.枚举类名.枚举成员名。你也许不知道他们的准确名字,为此可以参考【附录2】中的方式。

需要注意的是,此方式仅适用于 枚举类定义在C++代码里 的情况。

3. 设置枚举类属性值(枚举类定义在Enumeration资源里)

假如枚举类定义在Enumeration资源里:
在这里插入图片描述
为了测试,做一个蓝图Actor添加此类型的属性:
在这里插入图片描述
这里遇到的问题是:unreal.枚举类名失效了:
在这里插入图片描述
不过,“先获得属性value,然后使用type(value)获得枚举类”的方式依旧奏效。所以可以用下面的脚本:

value = actor.get_editor_property("MyTest")
actor.set_editor_property("MyTest",type(value).CCC)

在这里插入图片描述

(实验发现,去掉type(),即直接使用value.CCC也是可以的)

4. 设置枚举类属性值(枚举类定义在Enumeration资源里,且成员名以数字开头)

当我们在Enum资源中定义的枚举成员有数字开头时:
在这里插入图片描述
使用之前的方式将会产生问题:
在这里插入图片描述

这大概是因为Python中的枚举成员不能以数字作为开头。

这时,需要用cast函数:

value = actor.get_editor_property("MyTest2")
actor.set_editor_property("MyTest2",type(value).cast(2))

在这里插入图片描述
cast将一个数字转换为枚举值。当然,需要事先确认自己想要设置的值和数字的对应关系。

总结

  • 假如枚举类定义在C++中,则直接使用 unreal.枚举类名.枚举成员名
  • 假如枚举类定义在Enumeration资源中。则需要先获得值value,然后使用type(value)来取代之前的unreal.枚举类名
  • 假如枚举类定义在Enumeration资源中,且枚举成员是数字。则需要先获得值value,然后使用type(value).cast(i)将数字i转换为枚举值。此时也需要事先确认自己想要设置的值和数字的对应关系。

附录1:如何知道准确的属性名?

对于Actor,首先在编辑器中找到一个此类型的Actor,并修改一下你感兴趣的属性(确保此属性不是默认值)。然后,选择此Actor后按Ctrl+C来复制,然后找一个文本编辑器按Ctrl+V,就能看到Actor的字符串形式,然后就可以根据显示名和当前值来找到其准确的属性名了:
在这里插入图片描述

附录2:如何知道准确的枚举类名和枚举成员名

直接打印当前属性值:

value = actor.get_editor_property("SpawnCollisionHandlingMethod")
print(value)

这将会打印枚举类名,以及当前的枚举成员名
在这里插入图片描述
在编辑器中修改属性值,并再次打印,就可以按这种方式知道所有编辑器显示的名字与枚举成员名的对应关系。


要想知道当权枚举类的所有成员,有两种方式:

(1) 直接遍历unreal.枚举类名

for member in unreal.SpawnActorCollisionHandlingMethod:
    print(member)

在这里插入图片描述
(2) 先获得属性value,然后遍历 type(value)

actor = unreal.EditorLevelLibrary.get_selected_level_actors()[0]
value = actor.get_editor_property("SpawnCollisionHandlingMethod")
for member in type(value):
    print(member)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/233226.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】线程池

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

2024年网络安全竞赛-Web安全应用

Web安全应用 (一)拓扑图 任务环境说明: 1.获取PHP的版本号作为Flag值提交;(例如:5.2.14) 2.获取MySQL数据库的版本号作为Flag值提交;(例如:5.0.22) 3.获取系统的内核版本号作为Flag值提交;(例如:2.6.18) 4.获取网站后台管理员admin用户的密码作为Flag值提交…

我的隐私计算学习——隐私集合求交(1)

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成。 (一)PSI的介绍 隐私计算关键技术:隐私集合求交(PSI)原理介绍 隐私计算关键技术:隐私集合求交&#xff08…

【基于Flask、MySQL和Echarts的热门游戏数据可视化平台设计与实现】

基于Flask、MySQL和Echarts的热门游戏数据可视化平台设计与实现 前言数据获取与清洗数据集数据获取数据清洗 数据分析与可视化数据分析功能可视化功能 创新点结语 前言 随着游戏产业的蓬勃发展,了解游戏销售数据对于游戏从业者和游戏爱好者都至关重要。为了更好地分…

【Python数据结构与算法】—— 搜索算法 | 期末复习不挂科系列

​ 🌈个人主页: Aileen_0v0🔥系列专栏: 数据结构与算法💫个人格言:"没有罗马,那就自己创造罗马~" 这篇博客主要探索的是计算机科学常见问题---搜索算法 “时间紧,任务重!” 话不多说,开始今天…

高工氢电年会 | 未势能源解超朋博士受邀出席并做主题演讲

12月4日,以“战略重构 商业觉醒”为主题的2023高工氢电年会在深圳举办,未势能源副总裁解超朋博士受邀出席开幕式论坛,以《把握机遇、直面挑战,迎接氢车规模化推广时代》为主题发表演讲,并参与圆桌论坛研讨。 氢势已来&…

Linux系统中进程的背景(只从数据层面和硬件层面分析)

目录 1、冯诺依曼体系 2、管理的本质 3、 操作系统是如何对硬件进行管理的 4、 计算机的软硬件结构 5、 进程的组成 1、冯诺依曼体系 冯诺依曼是很早就提出的一个体系结构,他是将计算机分成五个部分,输入设备、输出设备、存储器、运算器和控制器。其中运…

Nature Communications 高时空分辨率的机器人传感系统及其在纹理识别方面的应用

前沿速览: 现有的触觉传感器虽然可以精确的检测压力、剪切力和应变等物理刺激,但还难以像人类手指一样通过滑动触摸,同时获取静态压力与高频振动来实现精确的纹理识别。为了解决这一问题,来自南方科技大学的郭传飞团队提出了衔接…

英伟达危机大爆发!一夜之间,四面楚歌

今年以来,AI大模型明争暗斗、百花齐放。 但不管各种大模型打的有多厉害,很多人都认为“卖铲子”的英伟达才是最大赢家。 看一下英伟达今年的股票就知道英伟达赚的是多么盆满钵满。 英伟达CEO黄仁勋在发布 H200显卡时,应该是今年最意气风发的…

Gan论文阅读笔记

GAN论文阅读笔记 2014年老论文了,主要记录一些重要的东西。论文链接如下: Generative Adversarial Nets (neurips.cc) 文章目录 GAN论文阅读笔记出发点创新点设计训练代码网络结构代码测试代码 出发点 Deep generative models have had less of an impac…

C/C++ 判断str1能不能由str2里面的字符构成,如果可以,返回true;否则,返回false

题目: 给两个字符串:str1和str2,判断str1能不能由str2里面的字符构成。 如果可以,返回true; 否则,返回false。 限制: str2 中的每个字符只能在str1中使用一次。 示例 1: 输入:str1 "a&q…

CSS3技巧36:让内容垂直居中的三种方式

让内容垂直居中,是一个很重要的应用情景,在很多场合都会需要。这也是面试的时候,一些考官喜欢拿来初面的小题目。 这里,小结下让内容垂直居中的三种方式。 当然,读者如果有更好的方法,也可以提出来。 基本…

使用Java实现汉诺塔问题

文章目录 汉诺塔问题 今天和大家来看看汉诺塔问题,这也是一个经典的算法 汉诺塔问题 分治算法经典问题:汉诺塔问题 汉诺塔的传说 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的…

面试必考精华版Leetcode875. 爱吃香蕉的珂珂

题目&#xff1a; 代码(首刷看解析&#xff09;&#xff1a; class Solution { public:int minEatingSpeed(vector<int>& piles, int h) {int low 1;int high 0;for(int pile:piles){highmax(high,pile);}int k high;while(low<high){int speed (high-low)/2l…

『 MySQL数据库 』聚合统计

文章目录 前言 &#x1f951;&#x1f95d; 聚合函数&#x1f353; COUNT( ) 查询数据数量&#x1f353; SUM( ) 查询数据总和&#x1f353; AVG( ) 查询数据平均值&#x1f353; MAX( ) 查询数据最大值&#x1f353; MIN( ) 查询数据最小值 &#x1f95d; 数据分组GROUP BY子句…

期待一下elasticsearch还未发布的8.12版本,由lucene底层带来的大幅度提升

现在是北京时间23年12月10日。当前es最新版本还是es8.11版本。我们可以期待一下不久的将来&#xff0c;es的8.12版本看到大幅度的检索性能提升。受益于 Lucene 9.9版本&#xff0c;内核带来的大幅提升&#xff01; 此次向量检索利用底层指令fma会性能提升5%。并且还提供了向量点…

零一万物模型折腾笔记:官方 Yi-34B 模型基础使用

当争议和流量都消失后&#xff0c;或许现在是个合适的时间点&#xff0c;来抛开情绪、客观的聊聊这个 34B 模型本身&#xff0c;尤其是实践应用相关的一些细节。来近距离看看这个模型在各种实际使用场景中的真实表现和对硬件的性能要求。 或许&#xff0c;这会对也想在本地私有…

NLP项目实战01--电影评论分类

介绍&#xff1a; 欢迎来到本篇文章&#xff01;在这里&#xff0c;我们将探讨一个常见而重要的自然语言处理任务——文本分类。具体而言&#xff0c;我们将关注情感分析任务&#xff0c;即通过分析电影评论的情感来判断评论是正面的、负面的。 展示&#xff1a; 训练展示如下…

Android笔记(十七):PendingIntent简介

PendingIntent翻译成中文为“待定意图”&#xff0c;这个翻译很好地表示了它的涵义。PendingIntent描述了封装Intent意图以及该意图要执行的目标操作。PendingIntent封装Intent的目标行为的执行是必须满足一定条件&#xff0c;只有条件满足&#xff0c;才会触发意图的目标操作。…

HCIP —— BGP 基础 (上)

BGP --- 边界网关协议 &#xff08;路径矢量协议&#xff09; IGP --- 内部网关协议 --- OSPF RIP ISIS EGP --- 外部网关协议 --- EGP BGP AS --- 自治系统 由单一的组织或者机构独立维护的网络设备以及网络资源的集合。 因 网络范围太大 需 自治 。 为区分不同的AS&#…