Actor
概述
Actor是一种基本类型的对象,您可以将它放到世界中或者可以在世界中生成 它。关于Actor的一个很好的简介是“可以更新的一群组件”。实际上,Actor可以做很多 事情;请查看 Actor.h
获得其包含的所有变量及函数。
一般,不会对Actor进行垃圾回收,因为World Object存放了一个Actor引用列表。通过调用 Destroy()
,可以显式地销毁Actor。这样会从关卡中删除该Actor,并将其标记为 “待销毁”状态,这意味着直到下一次垃圾回收清理它们之前,这些Actor仍然存在。
Actor 创建
创建新的 AActor
类实例的过程称为 生成 。这个处理可以通过使用通用的 SpawnActor()
函数或者其中一个专用的模板版本来完成。
请参照 生成 Actors页面获得关于为游戏创建 AActor
类的实例的各种方法的详细信息。
组件
在某种意义上,您可以把 Actors 想象成为一个容器,它存放了特殊类型的 对象 ,称为组件 。您可以使用不同类型的组件来控制如何移动Actors 、 如何渲染Actor等。Actors 的另一个主要功能是游戏过程中在网络上 复制
属性和函数调用。
当创建组件时,组件和包含它们的Actor相关联。
几种主要类型的组件包括:
-
UActorComponent
-
这是组件基类。它可以作为Actor的一部分。如果您想更新它则可以更新它。
USceneComponent
-
这个组件是“物理上实际存在”的东西,因为它可以存在于世界中。SceneComponents具有变换,这意味着它们可以到处移动及和世界中的其他东西 进行交互。在附加物层次结构中,它们也可以连接到一起。
UPrimitiveComponent
-
这个组件不仅可以存在于世界中,同时具有某种形式的表示(比如一个网格物体或粒子系统)。很多有趣的物理和碰撞设置 都在这里处理。
Actor可以具有层次结构化的SceneComponent。每个 Actor 也具有一个 RootComponent
属性,指出了哪个组件作为该 Actor 的根组件。Actors 本身没有变换,所以它们不具有位置、旋转度、 或缩放比例信息。但是,它们可以依赖于它们组件的变换;更确切地讲,是它们的根组件。如果这个组件是 SceneComponent ,那么它将为 该 Actor 提供变换信息。否则, Actor 将没有变换。其他的附加组件的变换是相对于它们所附加到的组件的。
Actor及其层次结构的示例可能如下所示:
GoldPickup Actor | 层次结构 |
---|---|
![]() |
|
Ticking(更新)
Ticking(更新) 是指在虚幻引擎中对象如何更新。所有对象每帧都可以更新,使您可以执行任何更新计算或者必要的动作。
默认情况下, Actor 都可以通过 TickActor()
函数进行更新。引擎每帧会执行一次该函数。
ActorComponents 默认也可以进行更新。请参照组件页面的更新部分获得更多信息。
复制
Replication(复制) 在多玩家网络游戏中,用于保持世界中的玩家同步。属性值和调用都可以进行复制,从而可以完全地 控制所有客户端上的游戏的状态。