属性声明

  • 属性使用标准的C++变量语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符。
UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)])
Type VariableName;
  • 示例:位掩码

UENUM(BlueprintType)
enum class EColorBits1 :uint8
{
ECB_Red,
ECB_Green,
ECB_Blue,
}; //使用"bitflags"元标记来创建UENUM,实际使用似乎没差别
UENUM(BlueprintType, Meta = (Bitflags))
enum class EColorBits2 :uint8
{
ECB_Red,
ECB_Green,
ECB_Blue,
};
UPROPERTY(EditAnywhere, Meta = (Bitmask))
int32 BasicBits; UPROPERTY(BlueprintReadWrite, EditAnywhere)
EColorBits1 ColorBits1; UPROPERTY(BlueprintReadWrite, EditAnywhere)
EColorBits2 ColorBits2; UPROPERTY(BlueprintReadWrite, EditAnywhere, Meta = (Bitmask, BitmaskEnum = "EColorBits1"))
int32 ColorFlags3; UPROPERTY(BlueprintReadWrite, EditAnywhere, Meta = (Bitmask, BitmaskEnum = "EColorBits2"))
int32 ColorFlags4;

在上述示例中, ECB_Red 值为0,表示它被选中时将激活位0(将ColorFlags增加1)。ECB_Green对应于位1(将ColorFlags增加2),ECB_Blue 对应于位2(将ColorFlags增加4)。

属性说明符

作用

  • 声明属性时,属性说明符 可被添加到声明,以控制属性与引擎和编辑器诸多方面的相处方式。

常用说明符

VisibleDefaultsOnly

// 仅在 Class Defaults 可见
UPROPERTY(VisibleDefaultsOnly)
int32 VisibleDefaultsOnlyInt;

VisibleInstanceOnly

// 仅在实例化 Detail 可见
UPROPERTY(VisibleInstanceOnly)
FVector VisibleInstanceOnlyVector;

VisibleAnywhere

//Class Defaults 和 实例化 Detail 可见
UPROPERTY(VisibleAnywhere)
FString VisibleAnywhereString;

EditDefaultsOnly

//仅在 Class Defaults 可编辑
UPROPERTY(EditDefaultsOnly)
int32 EditDefaultsOnlyInt;

EditInstanceOnly

//仅在实例化 Detail 可编辑
UPROPERTY(EditInstanceOnly)
FVector EditInstanceOnlyVector;

EditAnywhere

//Class Defaults 和 实例化 Detail 可编辑
UPROPERTY(EditAnywhere)
FString EditAnywhereString;

BlueprintReadOnly

//Variables 只读
UPROPERTY(BlueprintReadOnly)
int32 intValue_BlueprintReadOnly;

BlueprintReadWrite

//Variables 可读写
UPROPERTY(BlueprintReadWrite)
int32 intValue_BlueprintReadWrite;

Category 类别

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="TopCategory")
int32 intValue1; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "TopCategory|SubCategory")
int32 intValue2;

BlueprintAssignable

DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FNotifyPawnChange, float, PawnHpPercent, float, PawnPhysicalShieldPercent, float, PawnMageShieldPercent);

//蓝图中可绑定委托
UPROPERTY(BlueprintAssignable)
FNotifyPawnChange NotifyPawnChange;

元数据说明符 meta

作用

声明类、接口、结构体、列举、列举值、函数,或属性时,可添加 元数据说明符 来控制其与引擎和编辑器各方面的相处方式。每一种类型的数据结构或成员都有自己的元数据说明符列表

常见说明符

DisplayName 别名

  • 可以便于蓝图变量搜索,如果变量名不好记的话

EditCondition 条件可编辑

  • 支持bool、比较等条件判断
UPROPERTY(EditAnywhere,BlueprintReadWrite, meta = (DisplayName="UseOffset1、2 标志位") )
bool bUseOffset; UPROPERTY(EditAnywhere, meta = (DisplayName = "ContitionValue 控制 offset3"))
int32 ContitionValue; UPROPERTY(EditAnywhere, meta = (DisplayName = "ContitionColorBits 控制 offset4"))
EColorBits1 ContitionColorBits; UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "bUseOffset"))
float Offset1; UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "!bUseOffset"))
float Offset2; UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "ContitionValue>0"))
float Offset3; UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "ContitionColorBits==EColorBits1::ECB_Green"))
float Offset4;

UMETA 扩展宏

  • cpp meta里的中文在蓝图经常会乱码

    • 解决方法一:高级保存选择 Unicode 65001
    • 解决办法二:使用UMETA中的DisplayName
  • 可用于Enum的元素别名
  • 可用于结构体的元素别名
  • 可用于Datatable的别名
UPROPERTY(EditAnywhere)
FName ChineseName UMETA(DisplayName="中文名"); UPROPERTY(EditAnywhere)
float Weight UMETA(DisplayName = "体重") = 65.0f; UPROPERTY(EditAnywhere)
EColorBits1 FavoriteColorBits UMETA(DisplayName = "最喜欢的颜色")=EColorBits1::ECB_Blue;

参考

UPROPERTY

【UE4 C++ 基础知识】<1> UPROPERTY宏、属性说明符、元数据说明符的更多相关文章

  1. 【UE4 C++ 基础知识】<11>资源的同步加载与异步加载

    同步加载 同步加载会造成进程阻塞. FObjectFinder / FClassFinder 在构造函数加载 ConstructorHelpers::FObjectFinder Constructor ...

  2. 【UE4 C++ 基础知识】<2> UFUNCTION宏、函数说明符、元数据说明符

    UFunction声明 UFunction 是虚幻引擎4(UE4)反射系统可识别的C++函数.UObject 或蓝图函数库可将成员函数声明为UFunction,方法是将 UFUNCTION 宏放在头文 ...

  3. 基础知识系列☞C#中→属性和字段的区别

    "好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···" 其实本来准备叫"面试系列"... 字段.属性.你先知道的哪个概念? ***我 ...

  4. 【UE4 C++ 基础知识】<3> 基本数据类型、字符串处理及转换

    基本数据类型 TCHAR TCHAR就是UE4通过对char和wchar_t的封装 char ANSI编码 wchar_t 宽字符的Unicode编码 使用 TEXT() 宏包裹作为字面值 TCHAR ...

  5. 【UE4 C++ 基础知识】<10>资源的引用

    2种引用方式 硬引用(Hard Reference) 即对象 A 引用对象 B,并导致对象 B 在对象 A 加载时加载 硬引用过多会导致运行时很多暂时用不到的资源也被加载到内存中 大量资源会导致进程阻 ...

  6. 【UE4 C++ 基础知识】<12> 多线程——FRunnable

    概述 UE4里,提供的多线程的方法: 继承 FRunnable 接口创建单个线程 创建 AsyncTask 调用线程池里面空闲的线程 通过 TaskGraph 系统来异步完成一些自定义任务 支持原生的 ...

  7. 【UE4 C++ 基础知识】<8> Delegate 委托

    概念 定义 UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系. 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到 ...

  8. 【UE4 C++ 基础知识】<4> 枚举 Enum、结构体 Struct

    枚举 UENUM宏搭配BlueprintType可以将枚举暴露给蓝图,不使用的话,仅能在C++使用 //定义一个原生enum class enum class EMyType { Type1, Typ ...

  9. WPF 数据绑定 1_1 基础知识&绑定到元素属性

    A.数据绑定基础: 数据源对象:WPF将从该对象中提取信息,交由目标对象进行显示. 目标对象:从数据源中提取信息,并赋给该对象的属性. B.绑定到元素属性 最简单的绑定情形则是将一个源对象指定为一个W ...

随机推荐

  1. AWS扩容EC2实例根空间

    文章原文 aws 端操作 先在EC2 实例中选中磁盘 然后打开跟设备 修改大小后保存 ec2 端操作 lsblk 查看当前设备的磁盘编号 df -T -H 查看扩容前的空间大小并确定磁盘格式 grow ...

  2. 我的第一个npm包:wechat-menu-editor 基于Vue的微信自定义菜单编辑器

    wechat-menu-editor 微信自定义菜单编辑器 前言 在做微信公众号相关开发时,基本上会去开发的功能就是微信自定义菜单设置的功能,本着不重复造轮子的原则,于是基于Vue封装的一个微信自定义 ...

  3. noip模拟32

    \(\color{white}{\mathbb{山高而青云冷,池深而蛟穴昏,行以慎步,援以轻身,名之以:落石}}\) 开题发现 \(t1\) 80分特别好写,于是先写了 但是这个做法没有任何扩展性,导 ...

  4. 经典多级时间轮定时器(C语言版)

    经典多级时间轮定时器(C语言版) 文章目录 经典多级时间轮定时器(C语言版) 1. 序言 2. 多级时间轮实现框架 2.1 多级时间轮对象 2.2 时间轮对象 2.3 定时任务对象 2.4 双向链表 ...

  5. openswan协商流程之(一):main_outI1()

    主模式第一包:main_outI1() 1. 序言 main_outI1()作为主模式主动发起连接请求的核心处理函数,我们可以通过学习该函数的处理流程来探究openswan中报文封装的基本思想.如果之 ...

  6. Mybatis-Plus常用的查询方法--看这一篇就够了!!!

    前言: Mybatis-Plus作为Mybatis的增强,自己封装了很多简单还用的方法,来解脱自己写sql! 对于项目的搭建小编就不在说了,可以参考: SpringBoot+Mybatis-Plus的 ...

  7. SpingBoot-Dubbo-Zookeeper-分布式

    目录 分布式理论 什么是分布式系统? Dubbo文档 单一应用架构 垂直应用架构 分布式服务架构 流动计算架构 什么是RPC RPC基本原理 测试环境搭建 Dubbo Dubbo环境搭建 Window ...

  8. 升级到windows10之后的骚操作,安装debian,centos7,支持linux、docker、kubectl命令

    修改Windows10默认字体和图标很大 打开Hyper-V Windows10下载Docker Desktop https://www.docker.com/products/docker-desk ...

  9. Dockerfile自动制作Docker镜像(二)—— 其它常用命令

    Dockerfile自动制作Docker镜像(二)-- 其它常用命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerf ...

  10. 获取发布版SHA1和调试版SHA1

    总结 调试版: 常见问题 | 高德地图API (amap.com) 发布版: 首先需要生成签名 Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值_donkor_的博客-C ...