Skip to content

Commit dbc932c

Browse files
committed
fix: overlay scene being load multiple times, no. 2
1 parent 59b1af0 commit dbc932c

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

Assets/JCSUnity/Scripts/Managers/JCS_SceneManager.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ public class JCS_SceneManager : JCS_Manager<JCS_SceneManager>
2929
public Func<bool> onSwitchSceneIn = null;
3030
public Func<bool> onSwitchSceneOut = null;
3131

32-
private bool mIsEnteringSwitchScene = false;
32+
private bool mSwitchSceneEntering = false;
33+
34+
private bool mIsEnteringNextScene = false;
3335

3436
[Separator("Check Variables (JCS_SceneManager)")]
3537

@@ -261,7 +263,7 @@ private void Start()
261263

262264
private void Update()
263265
{
264-
if (mIsEnteringSwitchScene)
266+
if (mSwitchSceneEntering)
265267
DoEnterSwitchScene();
266268
else
267269
DoExitSwitchScene();
@@ -278,9 +280,6 @@ private void HandleAdditive()
278280
if (mLoadedOverlaySceneNames.Contains(sceneName))
279281
continue;
280282

281-
// Prevent scene loaded twice.
282-
mLoadedOverlaySceneNames.Add(sceneName);
283-
284283
if (mOverlayUseAsync)
285284
SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
286285
else
@@ -306,6 +305,9 @@ private void OnOverlaySceneLoaded(Scene scene, LoadSceneMode mode)
306305

307306
string sceneName = scene.name;
308307

308+
// Prevent scene loaded twice.
309+
mLoadedOverlaySceneNames.Add(sceneName);
310+
309311
// Execute event.
310312
if (mOnOverlaySceneLoaded.ContainsKey(sceneName))
311313
RegisterOverlaySceneLoaded(sceneName, mOnOverlaySceneLoaded[sceneName]);
@@ -387,7 +389,7 @@ public void LoadScene(string sceneName, LoadSceneMode mode,
387389
}
388390

389391
// Mark loading scene.
390-
mIsEnteringSwitchScene = true;
392+
mSwitchSceneEntering = true;
391393

392394
switch (mSwitchSceneType)
393395
{
@@ -684,6 +686,11 @@ private void DoExitSwitchScene()
684686
/// </summary>
685687
private void EnterNextScene()
686688
{
689+
if (mIsEnteringNextScene)
690+
return;
691+
692+
mIsEnteringNextScene = true;
693+
687694
// Don't set it to low, or else it will still be
688695
// not fade out when trying to load the next scnee.
689696
const float delay = 0.1f;

0 commit comments

Comments
 (0)