跳转至

2. JS函数方法使用说明

JS函数接口使用说明

jssdk通过调用函数方法来实现对其三维物体、二维物体、组件、灯光、相机等功能的更改

函数列表

函数 函数说明 参数说明
FindActor(name) 通过场景中的名称查找 name:物体的名称
FindMaterial(name) 通过场景中材质球的名称查找 name:材质球的名称
FindUiActor(name) 通过场景中二维物体的pid查找 name:二维物体的名称
GetActor(pid) 通过物体的pid查找 pid:物体的id
GetUIActor(pid) 通过二维物体的pid查找 pid:二维物体的id
GetMaterial(pid) 通过材质球的pid查找 pid:材质球的id
GetTexture(pid) 通过贴图的pid查找 pid:贴图的id
GetComponent(type) 通过组件英文名称查找组件 type:组件的英文名称
AddComponent(type) 通过组件英文名称添加组件 type:组件的英文名称
RemoveComponent(type) 通过组件英文名称移除组件 type:组件的英文名称
SetParent(parId, index) 设置Actor的父物体、调整Actor的子物体顺序 parId:设置当前物体的父物体id。
index:Actor子物体顺序位置的下标;默认值为i,不调整。
Copy() 克隆
RefreshComponent() 刷新组件
OnRefreshMaterial() 刷新材质

请求机制

js将数据发给C++来处理,实现各种功能效果

请求消息机制1:gVrpManager.Scene().Invoke(funcName, param1, param2="", param3="");
请求消息机制2:gVrpManager.Scene().SendUIEvent(funcName, param1, param2="", param3="");

参数名 是否必填 参数说明
funcName 接口函数名;发给C++的消息名
param1 参数;参数格式可为String、JSON格式;如下示例
param2 默认为空,不填
param3 默认为空,不填
1参数格式为JSON的接口示例Invoke):
        let jsonObj = {};
        jsonObj.Data = "camera";
        jsonObj.ApplyPos = "true";
        gVrpManager.Scene().Invoke("UIManager_ImportPreloadModel", JSON.stringify(jsonObj));

2参数格式为String的接口示例Invoke):
        gVrpManager.Scene().Invoke("RevokeManage", "Undo");

消息机制1函数列表

接口名说明
RevokeManage撤销或恢复上一步操作
UIManager_ImportModel导入功能
OnViewPortChanged修改界面大小
UIManager_SaveScene保存
Login登录

消息机制2函数列表

接口名说明
SceneAssetTree_Init初始化
SceneAssetTree_Create添加
SceneAssetTree_Remove移除
AppExit退出程序
ImportAsset导入
接口列表
RevokeManage
合法值说明
Undo撤销上一步操作
Redo撤销上一步操作
UIManager_ImportModel 请求参数格式JSON:{\"Data\":\"param\"}
合法值说明
model导入模型
scene导入场景
VRP导入动作库\材质库
示例代码:
gVrpManager.Scene().Invoke("UIManager_ImportModel", "{\"Data\":\"scene\"}");
OnViewPortChanged 请求参数格式JSON:JSON.stringify(param);
合法值说明
m_XMinX坐标位置
m_YMinY坐标位置
m_Width界面宽度
m_Height界面高度
示例代码:
   let rect = { m_XMin: 0, m_YMin: 0, m_Width: 0, m_Height:0 };
   gVrpManager.Scene().Invoke("OnViewPortChanged", JSON.stringify(rect));
UIManager_SaveScene
参数名说明
param1当前场景名
param2保存场景id
param3保存设置
示例代码:
gVrpManager.Scene().Invoke("UIManager_SaveScene", msg.name, tc.CurrentSelectID);
Login
参数名说明
param1userd
param2userIp
param3port
示例代码:
gVrpManager.Scene().Invoke("Login", userId, userIp, port);
SceneAssetTree_Init 无参数
SceneAssetTree_Create 请求参数格式JSON:JSON.stringify(param);
参数名说明
Data类型
ObjId当前物体的id
SubType类型
Data
合法值说明
Material材质
Texture贴图
ImagePan图片
ResourceFile资源文件
SkyBox文件
示例代码:
        let js = {};
        js.Data = "SkyBox";
        js.ObjId = tc.CurrentSelectID;
        js.SubType = msg.id;
        gVrpManager.Scene().SendUIEvent("SceneAssetTree_Create", JSON.stringify(js));
SceneAssetTree_Remove 请求参数格式JSON:{"Data":"param1,param2"}
参数名 说明
param1 类型
param2选中类型id
param1
合法值说明
Material材质
Texture贴图
ResourceFile文件
示例代码:
        let js = {};
        js.Data = "Texture," + id;
        gVrpManager.Scene().SendUIEvent("SceneAssetTree_Remove", JSON.stringify(js));
AppExit 无参数
ImportAsset 请求参数格式JSON:JSON.stringify(param);
参数名说明
Path路径
Type类型
Data材质数据
Type
合法值说明
Material材质
Model模型
Scene场景
Data
参数名说明
ObjID物体id
MatId材质id
Data材质库name
ParentParent
示例代码:
        //导入场景
        let jsonObj={};
        jsonObj.Type="Scene";
        jsonObj.Path="F:\\故事创作.vrp";
        gVrpManager.Scene().SendUIEvent("ImportAsset",JSON.stringify(jsonObj));

        //导入材质
        let jsonObj = {};
        jsonObj.Path = "";
        jsonObj.Type = "Material";
        jsonObj.Data ={};
        jsonObj.Data.ObjID = "actorId";
        jsonObj.Data.MatId = "271779136";
        jsonObj.Data.Data = "Actor/材质|Material/其他|Others/凹凸贴图|Bump Mapping";
        jsonObj.Data.Parent = "";
        console.log(jsonObj);
        gVrpManager.Scene().SendUIEvent("ImportAsset",JSON.stringify(jsonObj));

示例代码

        let testActor1 = gVrpManager.Scene().FindActor("1");
        let testActor2 = gVrpManager.Scene().FindActor("2");
        // 1、设置Actor的父物体、调整Actor的子物体顺序
        testActor1.SetParent(testActor2._pid, "2");

        // 2、克隆选中的物体;
        testActor1.Copy();

        // 3、获取、设置 当前选中的物体;
        // // 通过id获取当前选中的物体
        let copyActor = gVrpManager.Scene().GetActor(id);  //id为当前选中物体的id
        copyActor.name = "vrpSdk";

        // 4、撤销上一步操作、恢复撤销的操作;
        // 撤销上一步操作
        gVrpManager.Scene().Invoke("RevokeManage", "Undo");

        // 恢复上一步操作
        gVrpManager.Scene().Invoke("RevokeManage", "Redo");