@@ -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