Skip to content

Commit 073087a

Browse files
committed
fix: Prevent overlay scene being load multiple times
1 parent d7bcede commit 073087a

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

Assets/JCSUnity/Scripts/Managers/JCS_SceneManager.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ private void Awake()
144144
{
145145
RegisterInstance(this);
146146

147+
// Load early for better execution order for scripts.
147148
HandleAdditive();
148149

149150
switch (mSwitchSceneType)
@@ -273,6 +274,13 @@ private void HandleAdditive()
273274
{
274275
foreach (string sceneName in mOverlaySceneNames)
275276
{
277+
// Ensure only one scene name is loaded.
278+
if (mLoadedOverlaySceneNames.Contains(sceneName))
279+
continue;
280+
281+
// Prevent scene loaded twice.
282+
mLoadedOverlaySceneNames.Add(sceneName);
283+
276284
if (mOverlayUseAsync)
277285
SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
278286
else
@@ -298,8 +306,6 @@ private void OnOverlaySceneLoaded(Scene scene, LoadSceneMode mode)
298306

299307
string sceneName = scene.name;
300308

301-
mLoadedOverlaySceneNames.Add(sceneName);
302-
303309
// Execute event.
304310
if (mOnOverlaySceneLoaded.ContainsKey(sceneName))
305311
RegisterOverlaySceneLoaded(sceneName, mOnOverlaySceneLoaded[sceneName]);
@@ -678,9 +684,13 @@ private void DoExitSwitchScene()
678684
/// </summary>
679685
private void EnterNextScene()
680686
{
687+
// Don't set it to low, or else it will still be
688+
// not fade out when trying to load the next scnee.
689+
const float delay = 0.1f;
690+
681691
// Delay a bit of time to make sure it's completely
682692
// fade out.
683-
Invoke(nameof(InvokeEnterNextScene), 0.01f);
693+
Invoke(nameof(InvokeEnterNextScene), delay);
684694
}
685695
private void InvokeEnterNextScene()
686696
{

0 commit comments

Comments
 (0)