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