欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-25 16:37:28
...

您声明的每个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。 浏览一下。
相关标签: 游戏引擎