Unity把新场景代码添加到构建并在加载场景时叠加场景
转自个人简书:2020.09.28完成
把场景添加到构建,模仿了前人的经验,然后自己去改进了一下,场景用的是数组存,数组的长度不增加没法在后面通过索引去增加场景,也没有Add方法,只能取巧转List然后添加完转会数组添加到构建数组。
List<EditorBuildSettingsScene> bs = new List<EditorBuildSettingsScene>(); bs = EditorBuildSettings.scenes.ToList<EditorBuildSettingsScene>(); bs.Add(new EditorBuildSettingsScene(new GUID("db3600a44fc445546bfda4862ef917c9"), true)); EditorBuildSettings.scenes = bs.ToArray();
使用上面的代码把场景添加到构建会出问题,你启动一次,就会添加一次!!!!
这个时候需要在已经存在要添加场景的时候不执行添加代码。每一个EditorBuildSettingsScene都有一个属性GUID,我们可以通过判断新加入的场景的guid和已存在场景的guid进行对比,来添加。
List<EditorBuildSettingsScene> bs = new List<EditorBuildSettingsScene>(); bs = EditorBuildSettings.scenes.ToList<EditorBuildSettingsScene>(); foreach (var item in bs) { if(item.guid.Equals(new GUID("db3600a44fc445546bfda4862ef917c9"))) { return; } } bs.Add(new EditorBuildSettingsScene(new GUID("db3600a44fc445546bfda4862ef917c9"), true)); EditorBuildSettings.scenes = bs.ToArray();
把场景叠加的关键在于在调用SceneManager.LoadXXX()时LoadSceneMode这个参数,是一个枚举参数,可以选择简单加载场景和添加到已加载的场景。这个时候如果选用LoadSceneParameters这个参数去加载场景里面可以在加载场景的时候选择场景的力是2D力还是3D力。以下代码的功能就是给添加Index为1的新场景,场景选用3D物理力,把要加载的场景保存在变量里,在Update里就可以监听当前的加载进度了。
loadScene= SceneManager.LoadSceneAsync(1, new LoadSceneParameters(LoadSceneMode.Additive, LocalPhysicsMode.Physics3D)); private void Update() { if (!loadScene.isDone) { Debug.Log(a.progress); } }
分类:
Unity
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统