Actors

对基本gameplay元素、Actor和对象进行解释。

Windows
MacOS
Linux

可放入关卡中的对象都是 Actor。Actor是支持三维转换(如平移、旋转和缩放)的泛型类。可通过游戏进程代码(C++或蓝图)创建(生成)及销毁Actor。在C++中,AActor是所有Actor的基本类。

Actor分为数种类型,示例包括:StaticMeshActor、CameraActor和PlayerStartActor。

注意:Actor不直接保存变换(位置、旋转和缩放)数据;如Actor的根组件存在,则使用它的变换数据。

创建Actor

创建 AActor 类的新实例被称为 生成。可使用泛型 SpawnActor() 函数或它的一个特殊模板化版本进行操作。

生成 Actors 中可查阅gameplay AActor 类实例诸多创建方法的详细信息。

组件

在某种意义上,Actor 可被视为包含特殊类型 对象(称作组件)的容器。 不同类型的组件可用于控制Actor移动的方式及其被渲染的方式,等等。Actor的其他主要功能是在游戏进程中在网络上进行属性复制和函数调用。

组件被创建时与其包含的Actor相关联。

组件的主要类型有:

UActorComponent:这是基础组件。其可作为Actor的一部分被包含。如果需要,其可进行Tick。ActorComponents与特定的Actor相关联,但不存在于场景中的任意特定位置。它们通常用于概念上的功能,如AI或解译玩家输入。
USceneComponent:SceneComponents是拥有变换的ActorComponents。变换是场景中的位置,由位置、旋转和缩放定义。SceneComponents能以层级的方式相互附加。Actor的位置、旋转和缩放取自位于层级根部的SceneComponent。
UPrimitiveComponent:PrimitiveComponent是拥有一类图像表达(如网格体或粒子系统)的SceneComponent。诸多有趣的物理和碰撞设置均在此处。

Actor支持拥有一个SceneComponent的层级。每个Actor也拥有一个 RootComponent 属性,将指定作为Actor根的组件。Actor自身不含变换,因此不带位置、旋转,或缩放。它们依赖于其组件的变换,具体来说是其根组件的变换。如果此组件是一个 SceneComponent,其将提供Actor的变换信息。否则Actor将不带变换。其他附加的组件拥有相对于其附加到的组件的变换。

Actor和层级的范例应类似于此:

GoldPickup Actor

层级

GoldPickupExampleActor.png

  • 根 - SceneComponent:在场景中设置Actor基础位置的基础场景组件。

    • StaticMeshComponent:代表金矿石的网格体。

      • ParticleSystemComponent:附加到金矿石的闪烁粒子发射器。

      • AudioComponent:循环附加到金矿石的金属声发射器。

      • BoxComponent:碰撞盒体,用作拾取黄金重叠事件的触发器。

Ticking

Ticking代表Actor在虚幻引擎中的更新方式。所有Actor均能每帧tick,或以用户定义的最小间隔进行tick,以便执行必要的更新计算或操作。

所有Actor均可通过 Tick() 函数默认被tick。

ActorComponents 能够默认被更新,但其使用的是 TickComponent() 函数进行操作。参见组件页面的更新部分了解详情。

生命周期

查看Actor生命周期文档,了解如何在游戏中创建和移除Actor的更多信息。

复制

复制 用于在处理联网多人游戏时对场景中的Actor进行同步。属性值和函数调用均可被复制,以便对客户端上游戏的状态进行完整控制。

销毁Actor

Actor通常不会被垃圾回收,因为场景对象保存一个Actor引用的列表。调用 Destroy() 即可显式销毁Actor。这会将其从关卡中移除,并将其标记为“待销毁”,这说明其在下次垃圾回收中被清理之前都将存在。

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见