Skip to main content

Actor

场景中的绝大部分对象都是派生自 Actor 类,它提供了一些公共的方法和事件。继承自 Actor 的类有

  • Avatar
  • RichSurface
  • SubSequence/Sequence

实例化​

所有 Actor 的实例化必须通过 World 提供的工厂方法 spawn 来进行实例

接口签名:

class World {
/**
*
* @param ActorClass
* @param disposeOnRoomLeave Room Leave 时是否 dispose 该 Actor,默认 true
* @returns
*/
spawn<T extends IExtendedActor>(
ActorClass: ConstructorType<T>,
disposeOnRoomLeave?: boolean,
params?: SpawnParameters,
): T
}

使用示例:

const richsurface = this.getWorld().spawn(RichSurface, false)

spawn 方法的第一个参数是 Actor 类的子类,一般传入的是 SDK 提供的 Avatar 等 Actor 子类,开发者也可以传入继承这些类的子类。

第二个参数是布尔值 disposeOnRoomLeave,用于标识在离开当前房间时是否需要 SDK 内部销毁掉该 Actor。 是可选的,默认为 true。在某些情况下,如果想要创建一些不随房间离开一并销毁的 Actor 可以传入 false。

第三个参数是可选的。可用于指定 Actor 出生时的朝向、位置等数据。包含以下参数:

参数名说明
position用于设置 Actor 位置信息
rotation用于设置朝向信息
scaling用于控制缩放比例
template用于设置克隆 avatar,详见 克隆
priority用于设置克隆出来的 avatar 优先级

获取引用​

通过 spawn 方法实例化 Actor 之后,开发者可以自己存储 Actor 的引用。同时 SDK 内部也持有所有 Actor 实例引用,可以通过 World 实例的 actorsMap 访问到所有 Actor 实例,也可以通过 World 的 getActorsByType 方法,传入 Actor 类获取到所有该类 Actor 的实例。

销毁​

调用 Actor 实例的 dispose 方法会将该 Actor 从世界中移除销毁,SDK 持有的引用也会被删除。

如果开发者自己存储了 Actor 的引用,在调用 dispose 方法后也需要注意手动删除引用,防止幽灵节点的出现。

公共方法​

公共的方法参考如下表格

方法名说明
show显示该 Actor
hide隐藏该 Actor
dispose销毁该 Actor, 并释放该 Actor 持有的资源

事件​

参考 事件处理章节