我理解的是UFunction复用UStruct中的UProperty信息的方式是把自己的参数作为属性来保存,我认为 UE4 完全可以把UStruct改成UPolymer (聚合类型)或者UComplexType (复杂类型),然后把UScriptStruct改成UStruct。但是估计这其中有一些历史原因吧。 到这里为止,其实大家就能明白类型系统是如何支撑反射系统工作的了,对于任意一个U...
UPROPERTY(EditDefaultsOnly, Category=Texture) UTexture2D* Texture1; 还有一种是在构造时引用,这种情况是知道需要为给定属性加载的确切资源,并在对象的构造中设置该属性。这里都会直接进行加载操作,只不过是设置方式有所差别。 static ConstructorHelpers::FObjectFinder<UTexture2D> BarFillObj(TEXT("/Game/UI/HTe...
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Hierarchy") ERigElementType Type; UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Hierarchy", meta = (CustomWidget = "ElementName")) FName Name; ... FORCEINLINE bool IsValid() const { return Name != NAME_None && Type != ER...
2.可视化编程 椅子的旋转量现在是不可控的,我们把他变成从编辑器里面可以直接修改的。 还是这个视图,加一个变量 主要是这三项,第一个name,第二个type,Rotator 就是一个struct{float yaw pitch roll},一个有特殊变量名的vector3,描述旋转的三个轴。 第三个Instance Editable,表示这个变量可以在UnrealEditor里面编辑...
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="EFC|Zones") TArray MapZones; }; A: 每一个注册在Unreal反射系统中的Struct必须有前缀F,所以你的C++类型的名字应该为FmapZone。就像Actors需要前缀A,其他UObjects必须有前缀U。 Unreal Engine:It`s a way of life. ...
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="EFC|Zones") TArray<MapZone> MapZones; }; A:每一个注册在Unreal反射系统中的Struct必须有前缀F,所以你的C++类型的名字应该为FmapZone。就像Actors需要前缀A,其他UObjects必须有前缀U。 Unreal Engine:It`s a way of life. ...
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="EFC|Zones") TArray<MapZone> MapZones; }; A:每一个注册在Unreal反射系统中的Struct必须有前缀F,所以你的C++类型的名字应该为FmapZone。就像Actors需要前缀A,其他UObjects必须有前缀U。 Unreal Engine:It`s a way of life. ...
UPROPERTY(参数1,参数2) UFUNCTION(参数2,Category="类别名") 参数1: EditAnywhere 此属性可以通过属性窗口,原型和实例进行编辑(原型指的是类模板,实例指的是具体的对象实例) 参数2: BlueprintReadWrite 设置属性为蓝图读写。会在蓝图脚本中为被修饰的变量提供 Get 和 Set 方法 ...
主要是这三项,第一个name,第二个type,Rotator 就是一个struct{float yaw pitch roll},一个有特殊变量名的vector3,描述旋转的三个轴。 第三个Instance Editable,表示这个变量可以在UnrealEditor里面编辑 将这个变量拖拽进来,就会问你,你要get 还是 set,我们要get这个变量用 ...
struct FDataTableTestData : public FTableRowBase { GENERATED_USTRUCT_BODY() public: FDataTableTestData() : HP(0) {} UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DataTable Test") int32 HP; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DataTable Test") ...