虚幻中的c++

UPROPERTY

是虚幻中用于声明属性的宏,它用于标记某个属性是一个虚幻托管的属性,并且可以在编辑器中进行访问和操作。其提供了一系列参数,用于定义属性的各种行为,例如是否可编辑、是否可序列化等。

参数

  • VisibleDefaultsOnly:只能在蓝图类(类默认设置)中可见。
  • VisibleInstanceOnly:只能在实例(实例化细节面板)中可见。
  • VisibleAnywhere:在蓝图类和实例中都可见。
  • EditDefaultsOnly:只能在蓝图类中修改,实例中无法显示也无法修改。
  • EditInstanceOnly:只能在实例中修改,蓝图中无法显示也无法修改。
  • EditAnywhere:允许在编辑器中编辑该属性,包括蓝图类及其在关卡中的实例。
  • BlueprintReadOnly仅允许在蓝图的EventGraph读取该属性。
  • BlueprintReadWrite:允许在蓝图的EventGraph读写该属性。
  • Transient:该属性不会被序列化保存,通常用于临时数据或不希望被保存的数据。
  • Category:指定在编辑器中显示的该属性所属的分类,可以使用|添加子分类。
  • Replicated:属性在网络中可以进行复制。
  • Meta:可以用来设置一些元数据,如文档、关键字等:
  1. AllowPrivateAccess:指定在c++中标记为BluperintReadOnly或者BlueprintReadWrite的私有属性在蓝图中是否可以访问。
  2. ToolTip:给属性添加提示,方便在虚幻编辑器中查看。
  3. EditCondition:用于控制在虚幻编辑器中某些属性的显示和可编辑性。它允许基于另一个变量的值,动态地控制某个属性是否可以被编辑。这样,开发者可以设置更加灵活的界面逻辑,从而提高编辑器的使用体验。
  4. EditConditionHides:通常结合EditCondition一起使用,使得当条件不满足时完全隐藏相关属性。
  5. ExposeOnSpawn:指定该属性在对象构造时可以被传递和初始化,例如在蓝图的EventGraph中使用Spawn Actor from Class时传递相应的属性值。

UFUNCTION

是虚幻中用于声明函数的宏,它用于标记某个函数是一个虚幻托管的函数,并且可以在编辑器中进行访问和操作。其提供了一系列参数,用于定义函数的属性和行为,例如是否是蓝图可调用的、是否可在网络中复制等。

参数

  • BlueprintCallable:允许在蓝图中调用该函数。
  • BlueprintPure:声明该函数为纯函数,即不会修改对象的状态。
  • BlueprintImplementableEvent:声明该函数的具体实现逻辑完全在蓝图中,这样可以将底层逻辑放在c++,而将易于修改和设计的逻辑交给蓝图,从而减少c++的编译次数。另一方面,当被声明的函数没有返回值时,其在虚幻编辑器中实现时表现为事件;当有返回值时,其在虚幻编辑器中实现时表现为函数。
    例如,角色移动过程中受到攻击时,可能需要播放一个特定的受伤动画或者音效。这个时候,移动这种复杂且很少修改的逻辑放在c++中,而播放动画以及音效的部分则可以通过BlueprintImplementableEvent提取成函数在c++中进行调用,实现则放在蓝图中交给设计师来快速迭代。
  • BlueprintNativeEvent:声明该函数的实现在c++中,蓝图可以选择重载或者不重载。事件和函数的表现行为同BlueprintImplementableEvent

TEXT宏

虚幻引擎使用的是unicode编码,而TEXT()宏会根据平台的字符编码规则,将普通字符串转换成适合的平台字符类型。因此,使用的过程中有两个需要注意的地方:

  1. FString是基于宽字符的字符串类,其在接收字符串字面量时其内部会做一个隐式转换,因此为了平台兼容性,这个时候需要使用TEXT()宏。
  2. FName则可以直接接收字符串字面量。

注意事项

  1. C++中构造函数修改后切勿使用Live Coding,这样会导致蓝图损坏,最好的办法是关闭引擎,重新启动。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐