# 场景控制 ::: details 目录 [[toc]] ::: ## 加载场景 ### 完整结构 ::: details 完整格式 ```json5 { "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 完整格式 ```json5 { "CmdName": "PEChengScene",//--必填-- 场景控制 "Time": "", "Platform": "", "CmdParams": { }, "OrderList": [ { "OrderName": "PERemoveScene"//--必填-- 卸载场景 } ] } ``` ::: ### 补充说明 由于目前只支持前端应用中只能同时存在一个场景,所以收到**PERemoveScene**指令后就立刻卸载当前正在显示的场景并释放所有占用的资源内存. 因为JS垃圾回收机制并不会释放3D所占有的内存资源,所有前端应根据业务场景及时卸载场景释放资源保证客户端流畅。