UE4入门-常见的宏-UPROPERTY
来源:互联网 发布:安安软件站爆枪英雄 编辑:程序博客网 时间:2024/03/29 18:01
UPROPERTY 用途广泛。它允许变量被复制、被序列化,并可从蓝图中进行访问。垃圾回收器还使用它们来追踪对 UObject 的引用数。
本文只对部分常用的修饰属性做用法说明,高端的后面接触到了再补充,大佬勿喷
Unreal Engine version == 4.18.0 ; Virtual Studio 2017 update 15.4.2
- 简单的举个例子说明UPROPERTY宏的基本用法:
// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "ActorTest.generated.h"UCLASS()class UNREALCPPLEARN_API AActorTest : public AActor{ GENERATED_BODY()public: // Sets default values for this actor's properties AActorTest(); void PostInitProperties() override;protected: // Called when the game starts or when spawned virtual void BeginPlay() override;public: // Called every frame virtual void Tick(float DeltaTime) override;public: UPROPERTY(VisibleAnywhere, Category = "Snowing") int32 VoidParam; UPROPERTY(VisibleAnywhere, Category = "Snowing|Visible") FString VisibleAnywhereParam; // 没试出来有毛用 UPROPERTY(VisibleInstanceOnly, Category = "Snowing|Visible") FString VisibleInstanceOnlyParam; UPROPERTY(EditAnywhere, Category = "Snowing|Edit") float EditAnywhereParam; // 没试出来有毛用 UPROPERTY(EditInstanceOnly, Category = "Snowing|Edit") float EditInstanceOnlyParam; UPROPERTY(BlueprintReadOnly, Category = "Snowing|Blueprint") float BlueprintReadOnlyParam; UPROPERTY(BlueprintReadWrite, Category = "Snowing|Blueprint") float BlueprintReadWriteParam;};
UPROPERTY宏的修饰符说明信息:
AdvancedDisplay
属性在“详细信息”面板的高级下拉列表中UPROPERTY(VisibleAnywhere, AdvancedDisplay, Category = "Snowing") FString AdvancedDisplayParam;
AssetRegistrySearchable
AssetRegistrySearchable关键字表明此属性及其值将会为任意将其作为成员变量而包含的资源类示例被自动添加到资源注册中。不可用于结构体属性或参数BlueprintAssignable
仅能用于Multicast代理。应显示该属性,以供在蓝图中分配BlueprintCallable
仅能用于Multicast代理。应显示该属性,以在蓝图代码中调用BluprintReadOnly
设置属性为蓝图只读。会在蓝图脚本中为被修饰的变量提供 Get 方法,没有 Set 方法UPROPERTY(BlueprintReadOnly, Category = "Snowing|Blueprint") float BlueprintReadOnlyParam;
BlueprintReadWrite
设置属性为蓝图读写。会在蓝图脚本中为被修饰的变量提供 Get 和 Set 方法UPROPERTY(BlueprintReadWrite, Category = "Snowing|Blueprint") float BlueprintReadWriteParam;
BlueprintGetter / BlueprintSetter
BlueprintGetter属性指定一个自定义存取器函数。如果这个属性没有被标记为BlueprintSetter或者BlueprintReadWrite,那么它就是隐式的BlueprintReadOnly。用法:BlueprintGetter = GetterFunctionName()
BlueprintSetter属性有一个自定义的mutator函数,并用BlueprintReadWrite隐式标记。注意,必须指定mutator函数,用法BlueprintSetter = SetterFunctionName
public: UFUNCTION(BlueprintGetter) virtual float GetBlueprintGetterAndSetterParam() const { return BlueprintGetterAndSetterParam * 2.f; }UFUNCTION(BlueprintSetter) virtual void SetBlueprintGetterAndSetterParam(float InFloat) { BlueprintGetterAndSetterParam += 100.f; }UPROPERTY(EditAnywhere, BlueprintGetter = GetBlueprintGetterAndSetterParam, BlueprintSetter = SetBlueprintGetterAndSetterParam, Category = "Snowing|Blueprint") float BlueprintGetterAndSetterParam;
需要注意的是,不能把Setter函数显式声明为 inline ,否则会报错
Category = TopCategory|SubCategory|…
指定在Blueprint编辑工具中显示的属性的类别。使用|
定义嵌套层级UPROPERTY(VisibleAnywhere, Category = "Snowing|Visible") FString VisibleAnywhereParam;// 木有毛用UPROPERTY(VisibleInstanceOnly, Category = "Snowing|Visible") FString VisibleInstanceOnlyParam;UPROPERTY(EditAnywhere, Category = "Snowing|Edit") float EditAnywhereParam;// 木有毛用UPROPERTY(EditInstanceOnly, Category = "Snowing|Edit") float EditInstanceOnlyParam;
Config
这个变量将被配置。当前值可以保存到与类关联的.ini文件中,并在创建时加载。无法在默认属性中给出值。意味着ReadOnlyConst
这个变量是常量,应该导出为常量。在编辑器中const属性将是不可修改的DuplicateTransient
表示变量值应在任意类型的重复过程中(复制/粘贴, 二进制文件复制等)被重置为类默认值EditAntwhere / VisibleAnywhere
EditAntwhere 表示此属性可以通过属性窗口,原型和实例进行编辑(原型指的是类模板,实例指的是具体的对象实例)
VisibleAnywhere 指示此属性在所有属性窗口中都可见,但无法编辑。这个标签与“Edit”标签不兼容UPROPERTY(VisibleAnywhere, Category = "Snowing|Visible") FString VisibleAnywhereParam;UPROPERTY(EditAnywhere, Category = "Snowing|Edit") float EditAnywhereParam;
EditDefaultsOnly / VisibleDefaultOnly
EditDefaultsOnly 表示该属性可以由属性窗口编辑,但只能在原型上编辑。该操作符与“Visible”标签不兼容
VisibleDefaultOnly 表示此属性仅在原型的属性窗口中可见,并且不能被编辑。这个标签与“Edit”标签不兼容UPROPERTY(VisibleDefaultsOnly, Category = "Snowing|Visible") FText VisibleDefaultOnlyParam;UPROPERTY(EditDefaultsOnly, Category = "Snowing|Edit") FText EditDefaultsOnlyParam;
在蓝图类编辑面板中可以显示 DefaultOnly 修饰的属性
在场景中的实例对象属性面板不会显示 DefaultOnly 修饰的属性
EditInstanceOnly / VisibleInstanceOnly
EditInstanceOnly 表示这个属性可以被属性窗口编辑,但只能在实例上编辑,而不能在原型上编辑。该操作符与“Visible”标签不兼容
VisibleInstanceOnly 表示此属性仅在实例的属性窗口中可见,而不在原型中显示,且无法编辑。这个标签与“编辑”标签不兼容文档是这么写的,本小白是真没试出来毛效果,暂时认为与 Anywhere 类型的修饰属性效果一样
EditFixedSize
只对动态数组有用。这将防止用户通过虚幻编辑器属性窗口更改数组的长度EditInline
允许用户编辑虚幻编辑器属性检查器中由该变量引用的对象的属性(仅用于对象引用,包括Object引用数组)Export
仅适用于对象属性 (或对象数组)。指示在复制对象 (用于复制/粘贴) 或导出到 T3D 时, 应将分配给此属性的对象整体导出为对象块, 而不是仅输出对象引用本身GlobleConfig
像Config一样工作,只是你不能在子类中覆盖它。无法在默认属性中给出值。意味着ReadOnlyInstanced
对象 (UCLASS) 属性。创建此类的实例时, 将为默认情况下分配给该变量的对象提供一个唯一的副本。用于在类默认属性中定义的实例子。类似 EditInline 和 Export 修饰符Interp
表示该值可由Matinee的浮点或向量属性轨迹来随时间驱动Localized
此变量的值将定义本地值。最常用于字符串。ReadOnlyNative
C++代码负责对其序列化并显示给GCNoClear
防止该对象引用在编辑器中被设置为None.隐藏编辑器的清除(以及浏览)按钮NoExport
仅对native类有效。此变量不应被包含在自动生成的类声明中NonPIEDuplicateTeansient
在复制过程中,该属性将被重置为默认值,除非复制PIE会话NonTransactional
表示对此变量值所做的更改将不会包含在编辑器的撤销/重做历史记录中NotReplicated
跳过复制。这只适用于服务请求函数中的结构成员和参数Ref
该值在函数调用后被复制出来。仅在函数参数声明中有效Replicated
变量应通过网络进行复制ReplicatedUsing = FunctionName
ReplicatedUsing标签指定了一个回调函数,当通过网络更新变量时执行回调函数RepRetry
仅用于结构体属性。如无法被完全发送,请重试复制此属性(例如,对象引用尚无法通过节点网络来进行序列化)。对于简单引用来说,这是一个默认值,但对结构体来说,由于带宽消耗,很多情况下我们不需要。所以除非此标识被定义,否则其会被禁用SaveGame
此说明符是一种简单的方法,可以在属性级别为检查点/保存系统显式包含字段。该标志应设置在所有意图成为已保存游戏一部分的字段上,然后可使用代理归档程序对其进行读取/写入SerializeText
应将Native属性序列化为文本(ImportText,ExportText)SkipSerialization
该属性不会被序列化,但仍然可以导出为文本格式(例如复制/粘贴)SimpleDisplay
“Visible”或“Edit”属性显示在“详细信息”面板中,不显示“高级”部分即可见TextExportTransient
此属性不会被导出为文本格式(例如复制/粘贴)Transient
属性是暂时的,这意味着它不会被保存或加载。以这种方式标记的属性在加载时将被填满
- UE4入门-常见的宏-UPROPERTY
- UPROPERTY 宏的作用
- UE4入门-常见的宏-UFUNCTION
- UE4入门-常见的宏-UCLASS
- UE4入门-常见的宏-USTRUCT
- Unreal属性宏UPROPERTY的参数
- UE4入门-常见的对象-概述
- UE4反射机制UCLASS() USTRUCT() GENERATED_BODY() UPROPERTY() UFUNCTION()
- UE4反射机制UCLASS() USTRUCT() GENERATED_BODY() UPROPERTY() UFUNCTION()
- UE4入门-常见基本数据类型-容器
- UE4入门-常见基本数据类型-字符串
- UE4 五个最常见的基类
- UE4虚幻引擎入门的一些知识
- 【UE4/C++】宏的使用
- UE4 AI入门
- UE4编程快速入门
- UE4入门与精通
- UE4入门与精通
- 5 分钟带你弄懂 k-means 聚类
- js将一位数组分割成每三个一组
- java源码解读之HashMap
- 简单的SSM框架的搭建
- python操作excel
- UE4入门-常见的宏-UPROPERTY
- 负载压力测试分类
- 机器学习入门
- 网页底部固定版权信息
- Integer 中的缓存类IntegerCache
- 什么情况下会导致内存泄漏
- 笔记本电脑打字母出数字该怎么办
- 慕课网《HTML+CSS基础课程》笔记总结(二)
- Python3-Django的使用