《Unreal Engine 4 Scriptingwith C++ Cookbook》翻译 之 第二章:创建类 3. 创建用户可编辑的UPROPERTY

您声明的每个UCLASS可以在其中声明任何数量的UPROPERTY。 每个UPROPERTY都可以是可视的可编辑字段,也可以是UCLASS的某些“蓝图”可访问数据成员。
我们可以在每个UPROPERTY中添加许多限定符,这些限定符可以从UE4编辑器中更改其行为方式,例如EditAnywhere(可以从中更改UPROPERTY的屏幕)和BlueprintReadWrite(指定蓝图既可以读取也可以读取)。 除了允许使用C ++代码之外,还可以随时编写变量)。

  • 准备工作
    要使用此方案,您应该有一个C ++项目,可以在其中添加C ++代码。 另外,您应该已经完成了前面的方案,创建UCLASS - 派生自UObject
  • 如何做:
    1. 将成员添加到您的UCLASS声明中,如下所示:
      UCLASS( Blueprintable )
      class CHAPTER2_API UUserProfile : public UObject
      {
      	GENERATED_BODY()
      	 public:
      	 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category =  Stats)
      	 float Armor;
      	 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Stats)
      	 float HpMax;
      };
      
    2. 创建UObject类派生类的蓝图,然后通过从对象浏览器中双击在UE4编辑器中打开该蓝图。
    3. 现在,您可以在“蓝图”中为这些新的UPROPERTY字段的默认值指定值:
      《Unreal Engine 4 Scriptingwith C++ Cookbook》翻译 之 第二章:创建类 3. 创建用户可编辑的UPROPERTY
    4. 通过将Blueprint类的几个实例拖放到您的关卡中,然后编辑放置的对象上的值(通过双击它们)来指定每个实例的值。
  • 有什么用:
    传递给UPROPERTY()宏的参数指定了一些有关变量的重要信息。 在前面的示例中,我们指定了以下内容:
    1. EditAnywhere:这意味着可以直接从蓝图或在放置在游戏关卡中的UClass对象的每个实例上编辑UPROPERTY()宏。 将此与以下内容进行对比:
      1. EditDefaultsOnly:“蓝图”的值是可编辑的,但不能按实例进行编辑。
      2. EditInstanceOnly:这将允许在UClass对象的游戏级实例中编辑UPROPERTY()宏,而不是在基本蓝图本身上进行编辑。
    2. BlueprintReadWrite:这表明该属性在Blueprints图中既可读又可写。 具有BlueprintReadWrite的UPROPERTY()必须是公共成员,否则编译将失败。 将此与以下内容进行对比:
      1. BlueprintReadOnly:该属性必须从C ++设置,并且不能从Blueprints更改。
    3. Category:您应该始终为UPROPERTY()指定一个类别。 类别确定UPROPERTY()的哪个子菜单将出现在属性编辑器中。 在Category = Stats下指定的所有UPROPERTY()将出现在“蓝图”编辑器的同一Stats区域中。
  • 另请参见:
    完整的UPROPERTY列表位于https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/Reference/Properties/Specifiers/index.html。 浏览一下。
《Unreal Engine 4 Scriptingwith C++ Cookbook》翻译 之 第二章:创建类 3. 创建用户可编辑的UPROPERTY《Unreal Engine 4 Scriptingwith C++ Cookbook》翻译 之 第二章:创建类 3. 创建用户可编辑的UPROPERTY 爱心贴膜 发布了51 篇原创文章 · 获赞 3 · 访问量 1万+ 私信 关注
上一篇:Leecode 219:重复元素 II


下一篇:时隔两年,再次回归