UE4 C++入门之路2-C++中的UPROPERTY宏详解
Posted 珞珈大胖强TURBO
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 C++入门之路2-C++中的UPROPERTY宏详解相关的知识,希望对你有一定的参考价值。
C++中的UPROPERTY详解
前言
上节中讲到了C++类的创建,那么类创建结束后,我们都知道类是属性和方法的封装,那么创建属性的时候,怎么把属性公开到编辑器呢?就像Unity中public的属性直接公开在编辑器,但是UE4中不仅有编辑器,还有蓝图,那么这些属性对于蓝图和编辑器的可见性可编辑性需要开放给C++程序员设计,由此也就出现了UPROPERTY宏,此文旨在讲解清楚UPROPERTY宏的各种属性的用法和意义----
Edit,Visible
也是学了很久发现这三个没啥关系,所以目录做成了这三个,之前觉得Edit会影响Blueprint,现在看来不影响,话不多说,上代码
public:
UPROPERTY(EditAnywhere)
int32 TotalDamage;
对于这个属性TotalDamage,EditAnywhere的意思是在所有的编辑器界面中可以随意编辑(包括属性编辑器和蓝图的属性编辑器,见下图)这里说的蓝图是基于此C++类派生的蓝图类
C++类拖到场景中的编辑器界面
对于下列代码
public:
UPROPERTY(VisibleAnywhere)
int32 TotalDamage;
则在刚才的位置,其只能看,不能修改
对于下列代码
public:
UPROPERTY()
int32 TotalDamage;
则是看不到,当然也不能修改
Blueprint
那么之前说的可以在编辑器中设置可见性,那么在蓝图中,也就是蓝图节点编辑器中右键后Get和Set的时候,能否找到由什么决定呢,则是下列代码
public:
UPROPERTY(EditAnywhere,BlueprintReadWrite)
int32 TotalDamage;
对于上面的代码,其实EditAnywhere只是设置编辑器界面的,完全不会影响蓝图节点可见性,所以这些代码,表示右键可以Set,也可以Get,如下图
那么相应的,下列代码
public:
UPROPERTY(EditAnywhere,BlueprintReadOnly)
int32 TotalDamage;
则是只能Get,不能Set,如下图
Category
剩下最简单的Category,其实就是用户需要编辑此属性时,它将和其他属性(这些属性已以此类型命名标记)一同出现在Category设置的标题之下。这可将常用设置放置在一起,便于设计师进行编辑。
也就是这玩意
对应的代码
public:
UPROPERTY(EditAnywhere,BlueprintReadOnly)
int32 TotalDamage;
UPROPERTY(EditAnywhere, Category = "Damege")
float TotalDamageWithCategory;
UPROPERTY(EditAnywhere,BlueprintReadWrite, Category = "Damege")
float TotalDamageWithCategoryPublicToBp;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Damege")
int32 TotalDamageWithCategoryReadOnlyToBp;
Transient
public:
UPROPERTY(EditAnywhere,BlueprintReadOnly,Transient)
int32 TotalDamage;
对于这玩意,用的少,但是我还是说一下我的理解
官网说明的翻译为属性是瞬态的,这意味着它将不会被保存或加载。以这种方式标记的属性在加载时将被填充为零。
我的理解就是加Transient表示此值是不能序列化的,也就是不能通过序列化保存到本地文件,是瞬间的,加Transient应该是会省效率,但是最好加到游戏中就会使用并且结束生命的变量上面,即对游戏状态没有重要作用的变量身上
结束!不要吝啬一个赞奥,写的真累,下篇再见!
以上是关于UE4 C++入门之路2-C++中的UPROPERTY宏详解的主要内容,如果未能解决你的问题,请参考以下文章
UE4 C++入门之路5-热重载Compile(编译项目的三种方式)
UE4 C++入门之路7-UObject,AActor,UActorComponent,UStruct介绍,生命周期介绍
UE4 C++入门之路7-UObject,AActor,UActorComponent,UStruct介绍,生命周期介绍
UE4 C++入门之路7-UObject,AActor,UActorComponent,UStruct介绍,生命周期介绍