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。这会将其从关卡中移除,并将其标记为"待销毁",这说明其在下次垃圾回收中被清理之前都将存在。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback