【UE4从零开始 005】UE4中最基础的类

1、类

从大部分Gameplay类可以派生出4中主要类型的类。分别是

  • UObject
  • AActor
  • UActorComponent
  • UStruct
    当然也可以创建不继承任何父类的类,但它们不会参与到引擎内部的构建中。

UObject

虚幻引擎中的基本构建块叫做UObject,该类结合UClass使用,可以提供引擎中的多个最重要的基本服务:

  • 反射属性和函数
  • 序列化属性
  • 垃圾回收
  • 按名称查找UObject
  • 属性的可配置值
  • 属性和函数的联网支持

从UObject派生的每个类都会创建有一个UClass,UClass包含有关该类实例的所有元数据。UObject和UClass一起位于Gameplay对象在其生命周期所有作用的最根部位置。UClass描述的是UObject实例的样子、可序列化和联网的属性等。但是大多数Gameplay开发不会直接从UObject派生,而是从AActor和UActorComponent派生。

AActor

AActor派生自UObject,它由关卡设计师放在关卡中,或者通过Gameplay系统在运行时创建。可以放入关卡中的所有对象都是派生自AActor。AActor可以通过调用代码(C++或蓝图)销毁,或者在所属关卡从内存中卸载时通过标准的垃圾回收机制销毁。
AActor可以通过派生子类实现特殊化,也可以通过复合(充当UActorCOmponent的层级容器)实现特殊化。复合的过程通过AActor的RootComponent成员实现,它包含一个UActorComponent,而UActorComponent包含许多其他成员。在可以将AActor放入关卡之前,它必须包含至少一个USceneComponent,USceneComponent包含该AActor的平移、旋转、缩放。

UActorComponent

UActorComponent具有自己的特殊行为,可以为不同类型的AActor提供相同的功能。如:粒子特效等。AActor通常提供与该类型对象特征有关的高级行为功能,而UActorComponent通常用于提供可能与该对象类型特征不相关的特殊行为功能。UActorComponent可以成为AActor的根组件,也可以与其他组件相连接,一个组件只能连接到一个父组件或Actor,但可以连接多个子组件。子组件的位置、旋转和缩放是相对于父组件或Actor的。

  • ActorComponent 是组件的基础类。
  • 拥有变形的 ActorComponent 被称为 SceneComponents
  • 可被渲染的则称为 PrimitiveComponents

UStruct

想要使用UStruct的话,不必从任何特定类扩展,只需要用USTRUCT()标记该结构体即可,引擎构建工具会自动完成基本构建工作。与UObject不同的是UStruct不会被垃圾回收。如果创建了UStruct的动态实例,必须自行管理其生命周期。UStruct应该是纯传统数据类型,包含UObject反射支持,可以在虚幻编辑器、蓝图操控、序列化等中编辑。

2、类命名前缀

虚幻引擎提供了一些在构建过程中自动生成代码的工具,这些工具对类的命名有一些默认规则。如果命名不符合默认规则,则会触发警告或错误。规则如下:

  • 派生自 Actor 的类带 A 前缀,如AController。
  • 派生自 Object 的类带 U 前缀,如UComponent。
  • Enums 的前缀是 E,如EFortificationType。
  • Interface 的前缀通常是 I,如IAbilitySystemInterface。
  • Template 的前缀是 T, 如TArray。
  • 派生自 SWidget的类(Slate UI)带有前缀 S,如SButton。
  • 其他类的前缀是 F,如FVector。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值