调用引擎 API

    场景脚本 里可以调用引擎 API 和其他项目脚本,通过这个特性我们可以实现:

    • 查询、遍历场景中的节点,获取或修改节点数据

    • 调用节点上的引擎组件相关函数,完成工作

    package.json 中定义 contributions.scene 字段,该字段的值是一个相对于扩展包根目录的脚本文件路径,如下所示:

    - 模块加载的时候触发的函数

    unload - 模块卸载的时候触发的函数

    methods - 模块内定义的方法,可用于响应外部消息

    接下来,我们通过对主摄像机进行旋转,来演示场景脚本如何调用引擎 API。

    上面的代码中,我们定义了一个 rotateCamera 方法,此方法每执行一次,就会让主摄像机绕 Y 轴旋转 度。

    在其他扩展脚本中,我们可以使用如下代码调用 rotateCamera 函数:

    ExecuteSceneScriptMethodOptions 的属性定义如下:

    • method:scene.ts 中定义的方法
    • args: 参数,可选

    由于扩展间通信实现是基于 Electron 的底层跨进程 IPC 机制,传输的数据均会被序列化为JSON。所以传输的数据不可以包含原生对象,否则可能导致进程崩溃或者内存暴涨。如上面代码中的 参数和场景脚本方法的返回值,建议只传输纯 JSON 对象。