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 持有的资源 |
事件
参考 事件处理章节