ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity把新场景代码添加到构建并在加载场景时叠加场景

2022-06-24 10:00:53  阅读:191  来源: 互联网

标签:场景 List Unity 添加 bs new 加载


转自个人简书: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);
        }
    }

 

标签:场景,List,Unity,添加,bs,new,加载
来源: https://www.cnblogs.com/zjr0/p/16407709.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有