Skip to content
导览

阿凡达NPC图层管理 NPCLayerManager

阿凡达NPC图层管理器是用于控制云渲染阿凡达NPC图层的工具,通过获取该管理器,用户可以方便地进行阿凡达NPC图层的控制和管理。 该工具的主要功能包括:

  1. 添加一个阿凡达NPC
  2. 获取所有图层
  3. 批量删除某一层
  4. 设置双击NPC的回调函数

我们将提供详细的使用指南和功能说明,帮助用户更好地使用该工具。

NPCLayerManager 理器。

用户可以调用云渲染实例 cloud 上的 getNPCLayerManager() 方法来获取 NPCLayerManager 阿凡达NPC图层管理器。

ts
const NPCLayerManager = await cloud.getNPCLayerManager()
const NPCLayerManager = await cloud.getNPCLayerManager()

用户调用 cloud.getNPCLayerManager() 后,nPCLayerManager 会被自动挂载到当前 cloud 实例上。

ts
await cloud.getNPCLayerManager()
const NPCLayerManager = cloud.nPCLayerManager
await cloud.getNPCLayerManager()
const NPCLayerManager = cloud.nPCLayerManager

添加一个阿凡达NPC | addNPC

  • 说明:通过自定义参数,添加一个阿凡达NPC

我们可以调用 NPCLayerManager 上面的 addNPC 方法来添加一个阿凡达NPC。

  • 参数说明
NameTypeDescription
NPCInfoNPCObjectInfoNPC对象信息
layerNamenullstring

阿凡达NPC

您可以通过添加一个阿凡达NPC,使场景更加生动有趣。要添加一个阿凡达NPC,您可以使用云渲染提供的 addNPC 方法,将一个阿凡达模型文件添加到场景中去。

调用示例:

ts
let nPCLayerManager = await cloud.getNPCLayerManager()
const translation2 = new Vector3(0, 0, 0)
const eulerAngle2 = new Euler(30, 0, 0)
const scaling2 = new Vector3(1, 1, 1)
const trans = new Transform(translation2, eulerAngle2, scaling2)
const info: NPCObjectInfo = {
  resource: 'avatar_woman.wlkx',
  transform: trans,
  name: 'dms',
  action: AvatarNPCPosture.Dun_CaoZuo,
}
await nPCLayerManager.addNPC(info, 'dms_1')
let nPCLayerManager = await cloud.getNPCLayerManager()
const translation2 = new Vector3(0, 0, 0)
const eulerAngle2 = new Euler(30, 0, 0)
const scaling2 = new Vector3(1, 1, 1)
const trans = new Transform(translation2, eulerAngle2, scaling2)
const info: NPCObjectInfo = {
  resource: 'avatar_woman.wlkx',
  transform: trans,
  name: 'dms',
  action: AvatarNPCPosture.Dun_CaoZuo,
}
await nPCLayerManager.addNPC(info, 'dms_1')

获取所有图层 | getAllLayer

  • 说明:获取所有图层

我们可以调用 NPCLayerManager 上面的 getAllLayer 方法来获取所有图层。

调用示例:

ts
let nPCLayerManager = await cloud.getNPCLayerManager()
const ret = await nPCLayerManager.getAllLayer()
let nPCLayerManager = await cloud.getNPCLayerManager()
const ret = await nPCLayerManager.getAllLayer()

批量删除某一层 | removeLayer

  • 说明:批量删除某一图层

我们可以调用 NPCLayerManager 上面的 removeLayer 方法来批量删除某一层。

  • 参数说明
NameTypeDescription
layerArrayNPCLayer[]阿凡达NPC图层数组

调用示例:

ts
let nPCLayerManager = await cloud.getNPCLayerManager()
const ret = await nPCLayerManager.getAllLayer()
const e = await nPCLayerManager.removeLayer(ret)
let nPCLayerManager = await cloud.getNPCLayerManager()
const ret = await nPCLayerManager.getAllLayer()
const e = await nPCLayerManager.removeLayer(ret)

设置双击NPC的回调函数 | setDbClickCallback

  • 说明:设置双击NPC的回调函数

我们可以调用 NPCLayerManager 上面的 setDbClickCallback 方法来设置双击NPC的回调函数。

  • 参数说明
NameType
fn(npc: null | NPCObject) => void

调用示例:

ts
function pickNPC(npc: NPCObject | null) {
     console.log(npc)
}
let nPCLayerManager = await cloud.getNPCLayerManager()
nPCLayerManager.setDbClickCallback(pickNPC)
function pickNPC(npc: NPCObject | null) {
     console.log(npc)
}
let nPCLayerManager = await cloud.getNPCLayerManager()
nPCLayerManager.setDbClickCallback(pickNPC)

设置某个npc对象的位置随鼠标移动 | setAvatarNPCPosByMouse

  • 说明:设置某个npc对象的位置随鼠标移动

我们可以调用 NPCLayerManager 上面的 setAvatarNPCPosByMouse 方法来设置某个npc对象的位置随鼠标移动。

  • 参数说明
NameTypeDescription
npcObjNPCObjectNPCObject对象

调用示例:

ts
let nPCLayerManager = await cloud.getNPCLayerManager(); //获取阿凡达NPC图层管理器
const translation2 = new Vector3(0, 0, 0);
const eulerAngle2 = new Euler(30, 0, 0);
const scaling2 = new Vector3(1, 1, 1);
const trans = new Transform(translation2, eulerAngle2, scaling2);
const info: NPCObjectInfo = {
    resource: 'avatar_woman.wlkx',
    transform: trans,
    name: 'dms',
    action: AvatarNPCPosture.Dun_CaoZuo,
}
var npcObj = await nPCLayerManager.addNPC(info, 'dms_1');
await nPCLayerManager.setAvatarNPCPosByMouse(npcObj);
let nPCLayerManager = await cloud.getNPCLayerManager(); //获取阿凡达NPC图层管理器
const translation2 = new Vector3(0, 0, 0);
const eulerAngle2 = new Euler(30, 0, 0);
const scaling2 = new Vector3(1, 1, 1);
const trans = new Transform(translation2, eulerAngle2, scaling2);
const info: NPCObjectInfo = {
    resource: 'avatar_woman.wlkx',
    transform: trans,
    name: 'dms',
    action: AvatarNPCPosture.Dun_CaoZuo,
}
var npcObj = await nPCLayerManager.addNPC(info, 'dms_1');
await nPCLayerManager.setAvatarNPCPosByMouse(npcObj);