UE4 C++入门之路2-C++中的UPROPERTY宏详解

Posted 珞珈大胖强TURBO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 C++入门之路2-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++入门之路1-C++和蓝图的关系和介绍

UE4 C++入门之路3-C++和蓝图的互相调用

UE4 C++入门之路7-UObject,AActor,UActorComponent,UStruct介绍,生命周期介绍

UE4 C++入门之路7-UObject,AActor,UActorComponent,UStruct介绍,生命周期介绍

UE4 C++入门之路7-UObject,AActor,UActorComponent,UStruct介绍,生命周期介绍