大家好,欢迎来到IT知识分享网。
UClass 宏:
用于标记从UObject派生的类,使得UObject处理系统识别到它们
语法结构:
UCLASS(描述指令,描述指令,…)
六个常用宏标记:
1.可以作为蓝图中的一种变量类型使用,类默认均可被蓝图访问
UCLASS(BlueprintType)
2.默认可被继承,标记关系向子类传递,子类可覆盖描述关系
UCLASS(Blueprintable) UCLASS(BlueprintType,NotBlueprintable) // 可访问,但不可继承
3.将类声明为“抽象基类”,这样会阻止用户在虚幻编辑器中向这个世界中添加这个类的Actor,或者在游戏过程中创建这个类的实例
UCLASS(Abstract)
4.所有属性及函数均为常量,并应作为常量导出。该标识由子类继承
UCLASS(Const)
5.类内的成员变量数据信息保存到本地配置文件中,需要显式调用函数SaveConfig使用,并配合UPROPERTY宏操作
UCLASS(Config=Game)
6.用来配置组件在添加时分组情况
UCLASS(ClassGroup = (TestClass01))
UFUNCTION 宏
语法结构:
UFUNCTION(指令,指令..,meta(key=value)) //注意:在UFUNCTION修饰的函数中,如果参数类型是引用型参数,则在蓝图中将当做返回参数使用,无法查到输入针脚。 // 如果参数类型是const修饰的引用型参数,则参数被当做输入针脚使用
五个常用宏标记:
//1. BlueprintCallable:表明此函数可在蓝图中被调用(当类被蓝图继承后才有效果)
UFUNCTION(BlueprintCallable) void Func(int32& A, const int32& B); //void Func(输出针脚, 输入针脚)
Category=”UE4Test|MyActor” // |符号用来划分分类级别 UFUNCTION(BlueprintCallable,Category=”UE4Test|MyActor”);
public: UFUNCTION(BlueprintImplementableEvent, Category = "UECPP|ACPPActory") void Func();
UFUNCTION(BlueprintNativeEvent) void Func01(int32 Num); //在蓝图中调用 void Func01_Implementation(int32 Num);
UFUNCTION(BlueprintCallable, BlueprintPure)
UPROPERTY 宏
语法结构:
UPROPERTY(标记,标记,...,meta(key=value,key=value,...) //用于将对象属性暴露到蓝图中操作
常用宏标记:
1.Category 分组(定义属性的分类)
2.Blueprint
//----------以下2个不兼容,只能取其一: // BlueprintReadOnly:只读 UPROPERTY(BlueprintReadOnly) // BlueprintReadWrite:可读可写 UPROPERTY(BlueprintReadWrite) //----------以下2个仅能用于Multicast代理: // BlueprintAssignable:应显示该属性,以供在蓝图中分配 UPROPERTY(BlueprintAssignable) // BlueprintCallable:应显示该属性,以在蓝图代码中调用 UPROPERTY(BlueprintCallable)
3.Edit
/
/ EditAnywhere:可从编辑器内的属性窗口编辑,在原型和实例中 //(可以在编辑器窗口中进行编辑,也可在场景细节面板中编辑) UPROPERTY(EditAnywhere) // EditDefaultsOnly:可通过属性窗口来编辑,仅能对原型编辑 //(可以在蓝图编辑器中编辑原型数据,但无法在场景细节面板中编辑场景中的具体对象) UPROPERTY(EditDefaultsOnly) // EditInstanceOnly:可通过属性窗口来编辑,仅能对实例而非原型进行编辑 //(属性的修改权限在实例,不能在蓝图编辑器原型中修改) UPROPERTY(EditInstanceOnly) // EditFixedSize:限定动态数组长度,禁止用户在蓝图属性面板中修改(单一添加无法显式,需要配合使用上面两个标记) //只限制修改数组大小,不限制普通变量 UPROPERTY(BlueprintReadWrite, EditAnyWhere, EditFixedSize) // EditInline:使得用户可编辑UnrealEd的属性查看器中的变量所引用的对象属性 //(仅对对象引用可用,包括对象引用数组) UPROPERTY(EditInline)
4.Visible
// VisibleAnywhere:在属性窗口可见但无法编辑(原型实例中均可看到) //如果标记组件指针,则表示组件内容在场景和编辑器的细节面板中显示所有编辑项 //如果标记的是普通属性(指针、基本数据类型、复合数据类型),则在场景和编辑器中只显示,无法编辑 UPROPERTY(VisibleAnywhere) // VisibleDefaultsOnly:仅在原型蓝图编辑器属性窗口中可见,无法编辑 //如果标记组件指针,则表示组件内容在场景和编辑器的细节面板中显示所有编辑项 //如果标记的是普通属性(指针、基本数据类型、复合数据类型),则只在编辑器中会显示(不在场景细节面板中显示),无法编辑 UPROPERTY(VisibleDefaultsOnly) // VisibleInstanceOnly:仅在实例属性窗口中可见,无法编辑 //如果标记组件指针,则表示组件内容在场景和编辑器的细节面板中显示所有编辑项 ///如果标记的是普通属性(指针、基本数据类型、复合数据类型),则只在场景细节面板中会显示(不在编辑器中显示),无法编辑 UPROPERTY(VisibleInstanceOnly)
5.其他
AdvancedDisplay:将属性信息在细节面板中隐藏到高级显式项内容中
UPROPERTY(EditAnywhere, Category = "Adv") int AdvNum1; UPROPERTY(EditAnywhere, AdvancedDisplay, Category = "Adv") int AdvNum2;
Config:标记此属性可被存储到指定的配置文件中,启动时属性内容将从配置文件中获取
UPROPERTY(Config) meta=(DisplayName=”别名”):别名标记指令 //给函数或属性取一个别名,用于蓝图显示和搜索 //可用在修饰属性和函数上,要和暴露到蓝图中的宏连用 UPROPERTY(BlueprintReadWrite, EditAnyWhere, meta=(DisplayName=”取一个别名”))
成员属性值域约束
//只在UI上约束,填入数据不约束 UPROPERTY(EditAnyWhere, meta = (UIMin="10", UIMax = "20")) //UI上约束,填入数据也被约束 UPROPERTY(EditAnyWhere, meta = (ClampMin = "0", ClampMax = "10"))
成员属性修改约束
//EditCondition="bShow",借助一个布尔变量用来控制另一个变量是否可以在面板中被修改 UPROPERTY(EditAnywhere, EditFixedSize) bool bShow; UPROPERTY(EditAnywhere, AdvancedDisplay, meta = (ClampMin = "0", ClampMax = "10", EditCondition="bShow")) int32 wock; //蓝图可以访问C++中private中的属性,作用于在private中不能使用BlueprintReadWrite,加了(AllowPrivateAccess = “true”)之后就会把C++中私有的属性继承到蓝图并变成公有属性 UPROPERTY(EditAnywhere, EditFixedSize, meta = (AllowPrivateAccess = “true”))
原文参考https://www.cnblogs.com/ZWJ-zwj/p/16891198.html
讲的非常详尽
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120873.html


