From 30fca0d49b1e3ca946a50af7d8071789e1167df8 Mon Sep 17 00:00:00 2001 From: Monsoonexe <43690629+Monsoonexe@users.noreply.github.com> Date: Tue, 19 Oct 2021 02:26:38 -0700 Subject: [PATCH] Fix SceneIndex different from index in build settings If a scene was #3 visibly in the build index, but a scene above it was disabled, then the index shown in the SceneVariable would be off by 1 and cause problems when loading by integer. --- Assets/SO Architecture/Variables/SceneVariable.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Assets/SO Architecture/Variables/SceneVariable.cs b/Assets/SO Architecture/Variables/SceneVariable.cs index 135727fc..1eeee4f3 100644 --- a/Assets/SO Architecture/Variables/SceneVariable.cs +++ b/Assets/SO Architecture/Variables/SceneVariable.cs @@ -111,14 +111,21 @@ public void OnBeforeSerialize() var scenes = UnityEditor.EditorBuildSettings.scenes; SceneIndex = -1; + int enabledSceneIndex = 0;//scenes are only given a build index if enabled. for (var i = 0; i < scenes.Length; i++) { + bool sceneIsEnabled = scenes[i].enabled; if (scenes[i].guid.ToString() == sceneAssetGUID) { - SceneIndex = i; - IsSceneEnabled = scenes[i].enabled; + if(sceneIsEnabled) + SceneIndex = enabledSceneIndex++; + IsSceneEnabled = sceneIsEnabled; break; } + else if (sceneIsEnabled) + { + ++enabledSceneIndex; + } } } #endif