Skip to content

Commit 91e84f2

Browse files
committed
Fixed async scene switching issue
1 parent 576ac33 commit 91e84f2

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

MLAPI/NetworkingManagerComponents/Core/NetworkSceneManager.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ public static void SwitchScene(string sceneName)
5656
CurrentSceneIndex = sceneNameToIndex[sceneName];
5757
isSwitching = true;
5858
lastScene = SceneManager.GetActiveScene();
59-
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
59+
nextScene = SceneManager.GetSceneByName(sceneName);
60+
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(nextScene.buildIndex, LoadSceneMode.Additive);
6061
sceneLoad.completed += OnSceneLoaded;
6162

6263
using (PooledBitStream stream = PooledBitStream.Get())
@@ -92,16 +93,16 @@ internal static void OnSceneSwitch(uint sceneIndex)
9293
}
9394
SpawnManager.DestroySceneObjects();
9495
lastScene = SceneManager.GetActiveScene();
95-
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(sceneIndexToString[sceneIndex], LoadSceneMode.Additive);
96+
nextScene = SceneManager.GetSceneByName(sceneIndexToString[sceneIndex]);
97+
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(nextScene.buildIndex, LoadSceneMode.Additive);
9698
sceneLoad.completed += OnSceneLoaded;
9799
}
98100

99101
private static void OnSceneLoaded(AsyncOperation operation)
100102
{
101103
SceneManager.SetActiveScene(nextScene);
104+
102105
List<NetworkedObject> objectsToKeep = SpawnManager.SpawnedObjectsList;
103-
//The last loaded scene
104-
nextScene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);
105106
for (int i = 0; i < objectsToKeep.Count; i++)
106107
{
107108
SceneManager.MoveGameObjectToScene(objectsToKeep[i].gameObject, nextScene);

0 commit comments

Comments
 (0)