我正在制作一款坦克战斗游戏,每轮后都会随机生成新的关卡。在我的游戏经理中,我试图使回合从一个随机范围索引中的一个加性加载场景开始,然后以卸载场景并随后加载到一个新的随机场景中结束。但是,每次尝试都会导致某种形式的错误。
我一直被定向到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");
通过设置此代码的方式,如果新的随机级别是先前使用的级别的重复,它似乎可以正常工作,但是如果调用的级别不同,则会给我一个错误并崩溃。
任何关于从这里出发的建议都将受到赞赏。我绝不是程序员,因此需要简单而详细的说明。谢谢。
答案 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");