ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2020-02-28 13:41:38  阅读:463  来源: 互联网

标签:Engine UPROPERTY BlueprintReadWrite 创建 蓝图 UCLASS 指定 编辑


您声明的每个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字段的默认值指定值:
    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。 浏览一下。
爱心贴膜 发布了51 篇原创文章 · 获赞 3 · 访问量 1万+ 私信 关注

标签:Engine,UPROPERTY,BlueprintReadWrite,创建,蓝图,UCLASS,指定,编辑
来源: https://blog.csdn.net/u014086851/article/details/104554189

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有