栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

C++中的UPROPERTY详解
  • 前言
    • Edit,Visible
    • Blueprint
    • Category
    • Transient

前言

上节中讲到了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应该是会省效率,但是最好加到游戏中就会使用并且结束生命的变量上面,即对游戏状态没有重要作用的变量身上

结束!不要吝啬一个赞奥,写的真累,下篇再见!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429828.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号