切换场景.md 3.0 KB

场景控制

::: details 目录 [[toc]] :::

加载场景

完整结构

::: details 完整格式

{
        "CmdName": "PEChengScene",//--必填-- 场景控制
        "Time": "",
        "Platform": "",
        "CmdParams": {

        },
        "OrderList": [{
                "OrderName": "PELoadScene",//--必填-- 加载场景 
                "OrderParams": {
                    "SceneName": "PublicScene",//--必填-- 需要加载的场景名称
                    "Url": {//模型轻量化服务器地址
                        "burl": "",
                        "rurl": ""
                    },
                    "Configs": [//该场景需要定制的配置文件 后一个与前一个合并
                        "JsonConfig/PorjectConfig.json"
                    ],
                    "SceneParam":{//向指定场景文件传入初始化参数,根据业务场景自定义

                    }
                }
            }
        ]

    }

:::

参数说明

::: details SceneName 场景初始化的过程中需要一个类专门负责读取配置文件并初始化3D场景,SceneName的作用就是指定谁去做这件事情,如果需要特殊定制,则需要自己实现场景类并将SceneName指向该类型的名称。

引擎默认已经内置了一个PublicScene类专门负责初始化场景,所以SceneName的值直接写PublicScene即可. :::

::: details Url Url对象用于设置当前场景中加载模型的服务器地址,此处的Url对象会覆盖配置文件中的Url设置 :::

::: details Configs Configs用于设置加载此场景需要读取的配置文件列表,如果存在多个配置文件,则后一个配置文件会与前一个配置文件做一次原子合并操作

    例如:

    A.json (表示整个工程的通用配置选项)
    {
        AA:'AA',
        BB:{
          name:'AA'  
        },
        CC:'AA'
    }

    B.json (某个特殊场景的配置文件)
     {
        BB:{
          name:'BB'  
        }
    }

    Configs参数:['JsonConfig/A.json','JsonConfig/B.json']

    引擎加载配置文件的时候会将B.json与A.json文件做一次合并最终得到
    {
        AA:'AA',
        BB:{
          name:'BB'  
        },
        CC:'AA'
    }

:::

卸载场景

完整格式

::: details 完整格式

{
        "CmdName": "PEChengScene",//--必填-- 场景控制
        "Time": "",
        "Platform": "",
        "CmdParams": {

        },
        "OrderList": [
            {
                "OrderName": "PERemoveScene"//--必填-- 卸载场景
            }
        ]

    }

:::

补充说明

由于目前只支持前端应用中只能同时存在一个场景,所以收到PERemoveScene指令后就立刻卸载当前正在显示的场景并释放所有占用的资源内存.

因为JS垃圾回收机制并不会释放3D所占有的内存资源,所有前端应根据业务场景及时卸载场景释放资源保证客户端流畅。