如何卸载附加场景?

时间:2019-04-22 03:07:20

标签: c# unity3d

我正在制作一款坦克战斗游戏,每轮后都会随机生成新的关卡。在我的游戏经理中,我试图使回合从一个随机范围索引中的一个加性加载场景开始,然后以卸载场景并随后加载到一个新的随机场景中结束。但是,每次尝试都会导致某种形式的错误。

我一直被定向到LoadLevelAsync,但似乎只给了我更多似乎没人能回答的问题。

以下是当前的布局:

//Load random level scene
        int index = Random.Range(2, 4);
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
        Debug.Log("SceneLoaded");


//Unload current scene and load new random level scene

        int index = Random.Range(2, 4);
        SceneManager.UnloadSceneAsync(index);
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
        Debug.Log("SceneLoaded");

通过设置此代码的方式,如果新的随机级别是先前使用的级别的重复,它似乎可以正常工作,但是如果调用的级别不同,则会给我一个错误并崩溃。

任何关于从这里出发的建议都将受到赞赏。我绝不是程序员,因此需要简单而详细的说明。谢谢。

1 个答案:

答案 0 :(得分:0)

//Load random level scene
        int index = Random.Range(2, 4);
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);

Suppose if here 'index' number is 3 and scene 3 is loaded.ok no problem.

//Unload current scene and load new random level scene

        int index = Random.Range(2, 4);
        SceneManager.UnloadSceneAsync(index);

And here 'index' number is generate again such as 2.You want to unlode scene 2 but is not there thats the problem.

Solution :-

//Load random level scene
        int index = Random.Range(2, 4);
        int lodedScene = index;
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
        Debug.Log("SceneLoaded");


//Unload current scene and load new random level scene

        int index = Random.Range(2, 4);
        SceneManager.UnloadSceneAsync(lodedScene);
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
        Debug.Log("SceneLoaded");