码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • UE4 C++:UPROPERTY宏、属性说明符、元数据说明符


    目录

    属性声明

    属性说明符

    VisibleDefaultsOnly:仅在Class Defaults可见

    VisibleInstanceOnly:仅在实例化Detail可见

    EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行

    VisibleAnywhere:Class Defaults 和 实例化 Detail 可见

    EditDefaultsOnly:仅在 Class Defaults 可编辑

    EditAnywhere:Class Defaults 和 实例化 Details 可编辑

    BlueprintReadOnly:蓝图只读,只能Get

    BlueprintReadWrite:蓝图读写,Get和Set

    Category 类别

    BlueprintAssignable:蓝图中可绑定委托

    元数据说明符meta

    DisplayName 别名

    EditCondition 条件可编辑

    UMETA 扩展宏


    属性声明

    用于UE反射系统,属性使用C++变量语法声明,前面用UPROPERTY()宏来定义属性元数据和变量说明符

    UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)])
    Type VariableName;

    示例

    1. UENUM(BlueprintType)
    2. enum class EColorBits1 :uint8
    3. {
    4. ECB_Red,
    5. ECB_Green,
    6. ECB_Blue,
    7. };
    8. //使用"bitflags"元标记来创建UENUM,实际使用似乎没差别
    9. UENUM(BlueprintType, Meta = (Bitflags))
    10. enum class EColorBits2 :uint8
    11. {
    12. ECB_Red,
    13. ECB_Green,
    14. ECB_Blue,
    15. };

    属性说明符

    控制属性与引擎和编辑器的相处方式

    常用说明符:

    VisibleDefaultsOnly:仅在Class Defaults可见

    1. UPROPERTY(VisibleDefaultsOnly)
    2. int32 VisibleDefaultsOnlyInt;

    VisibleInstanceOnly:仅在实例化Detail可见

    1. UPROPERTY(VisibleInstanceOnly)
    2. FVector VisibleInstanceOnlyVector;

    EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行

    VisibleAnywhere:Class Defaults 和 实例化 Detail 可见

    1. UPROPERTY(VisibleAnywhere)
    2. FString VisibleAnywhereString;

    EditDefaultsOnly:仅在 Class Defaults 可编辑

    1. UPROPERTY(EditDefaultsOnly)
    2. int32 EditDefaultsOnlyInt;

    EditAnywhere:Class Defaults 和 实例化 Details 可编辑

    1. UPROPERTY(EditAnywhere)
    2. FString EditAnywhereString;

    BlueprintReadOnly:蓝图只读,只能Get

    1. UPROPERTY(BlueprintReadOnly)
    2. int32 intValue_BlueprintReadOnly;

    BlueprintReadWrite:蓝图读写,Get和Set

    1. UPROPERTY(BlueprintReadWrite)
    2. int32 intValue_BlueprintReadWrite;

    Category 类别

    1. UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="TopCategory")
    2. int32 intValue1;
    3. UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "TopCategory|SubCategory")
    4. int32 intValue2;

    BlueprintAssignable:蓝图中可绑定委托

    1. DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FNotifyPawnChange, float, PawnHpPercent, float, PawnPhysicalShieldPercent, float, PawnMageShieldPercent);
    2. //蓝图中可绑定委托
    3. UPROPERTY(BlueprintAssignable)
    4. FNotifyPawnChange NotifyPawnChange;

    元数据说明符meta

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

    常见说明符

    DisplayName 别名

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

    EditCondition 条件可编辑

    1. UPROPERTY(EditAnywhere,BlueprintReadWrite, meta = (DisplayName="UseOffset1、2 标志位") )
    2. bool bUseOffset;
    3. UPROPERTY(EditAnywhere, meta = (DisplayName = "ContitionValue 控制 offset3"))
    4. int32 ContitionValue;
    5. UPROPERTY(EditAnywhere, meta = (DisplayName = "ContitionColorBits 控制 offset4"))
    6. EColorBits1 ContitionColorBits;
    7. UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "bUseOffset"))
    8. float Offset1;
    9. UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "!bUseOffset"))
    10. float Offset2;
    11. UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "ContitionValue>0"))
    12. float Offset3;
    13. UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "ContitionColorBits==EColorBits1::ECB_Green"))
    14. float Offset4;

    UMETA 扩展宏

    • cpp meta里的中文在蓝图经常会乱码
      • 解决方法一:高级保存选择 Unicode 65001
      • 解决办法二:使用UMETA中的DisplayName
    • 可用于Enum的元素别名
    • 可用于结构体的元素别名
    • 可用于Datatable的别名
    1. UPROPERTY(EditAnywhere)
    2. FName ChineseName UMETA(DisplayName="中文名");
    3. UPROPERTY(EditAnywhere)
    4. float Weight UMETA(DisplayName = "体重") = 65.0f;
    5. UPROPERTY(EditAnywhere)
    6. EColorBits1 FavoriteColorBits UMETA(DisplayName = "最喜欢的颜色")=EColorBits1::ECB_Blue;

    参考链接: 

    Unreal Engine UProperties | 虚幻引擎5.0文档

    【UE4 C++ 基础知识】<1> UPROPERTY宏、属性说明符、元数据说明符 - 砥才人 - 博客园 (cnblogs.com)

  • 相关阅读:
    React-moveable的使用
    C++调用lua脚本,包括全局函数绑定、类绑定,十分钟快速掌握
    Shell
    NISP和CISP有什么区别,哪个证更好?
    file2Udp增量日志转出Udp简介
    cesium图标漂移分析与解决
    如何保障UDP传输中数据文件不丢失?
    入侵检测系统
    Python——多线程编程
    Linux软硬连接与动静态库
  • 原文地址:https://blog.csdn.net/Jason6620/article/details/126502800
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号