其他分享
首页 > 其他分享> > Unity把新场景代码添加到构建并在加载场景时叠加场景

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);
        }
    }

 

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