@@ -62,6 +62,16 @@ public class JCS_SceneManager : JCS_Manager<JCS_SceneManager>
6262 [ SerializeField ]
6363 private JCS_SwitchSceneType mSwitchSceneType = JCS_SwitchSceneType . BLACK_SCREEN ;
6464
65+ [ Header ( "Overlay" ) ]
66+
67+ [ Tooltip ( "A list of addictive scene to load." ) ]
68+ [ Scene ]
69+ private List < string > mOverlaySceneNames = null ;
70+
71+ [ Tooltip ( "Load scene asynchronously." ) ]
72+ [ SerializeField ]
73+ private bool mUseAsync = false ;
74+
6575 [ Separator ( "Runtime Variables (JCS_SceneManager)" ) ]
6676
6777 [ Header ( "- Screen" ) ]
@@ -90,25 +100,30 @@ public class JCS_SceneManager : JCS_Manager<JCS_SceneManager>
90100
91101 /* Setter & Getter */
92102
93- public JCS_SwitchSceneType switchSceneType { get { return this . mSwitchSceneType ; } set { this . mSwitchSceneType = value ; } }
94- public JCS_DynamicScene GetDynamicScene ( ) { return this . mDynamicScene ; }
95- public void SetDynamicScene ( JCS_DynamicScene ds ) { this . mDynamicScene = ds ; }
96- public void SetBlackScreen ( JCS_BlackScreen bs ) { this . mBlackScreen = bs ; }
97- public void SetBlackSlideScreen ( JCS_BlackSlideScreen bs ) { this . mBlackSlideScreen = bs ; }
98- public void SetWhiteScreen ( JCS_WhiteScreen ws ) { this . mWhiteScreen = ws ; }
99- public JCS_WhiteScreen GetWhiteScreen ( ) { return this . mWhiteScreen ; }
100- public JCS_BlackScreen GetBlackScreen ( ) { return this . mBlackScreen ; }
103+ public JCS_SwitchSceneType switchSceneType { get { return mSwitchSceneType ; } set { mSwitchSceneType = value ; } }
104+ public List < string > overlaySceneNames { get { return mOverlaySceneNames ; } set { mOverlaySceneNames = value ; } }
105+ public bool useAsync { get { return mUseAsync ; } set { mUseAsync = value ; } }
101106
102- public bool overrideSetting { get { return this . mOverrideSetting ; } }
103- public float sceneFadeInTime { get { return this . mSceneFadeInTime ; } set { this . mSceneFadeInTime = value ; } }
104- public float sceneFadeOutTime { get { return this . mSceneFadeOutTime ; } set { this . mSceneFadeOutTime = value ; } }
107+ public JCS_DynamicScene GetDynamicScene ( ) { return mDynamicScene ; }
108+ public void SetDynamicScene ( JCS_DynamicScene ds ) { mDynamicScene = ds ; }
109+ public void SetBlackScreen ( JCS_BlackScreen bs ) { mBlackScreen = bs ; }
110+ public void SetBlackSlideScreen ( JCS_BlackSlideScreen bs ) { mBlackSlideScreen = bs ; }
111+ public void SetWhiteScreen ( JCS_WhiteScreen ws ) { mWhiteScreen = ws ; }
112+ public JCS_WhiteScreen GetWhiteScreen ( ) { return mWhiteScreen ; }
113+ public JCS_BlackScreen GetBlackScreen ( ) { return mBlackScreen ; }
114+
115+ public bool overrideSetting { get { return mOverrideSetting ; } }
116+ public float sceneFadeInTime { get { return mSceneFadeInTime ; } set { mSceneFadeInTime = value ; } }
117+ public float sceneFadeOutTime { get { return mSceneFadeOutTime ; } set { mSceneFadeOutTime = value ; } }
105118
106119 /* Functions */
107120
108121 private void Awake ( )
109122 {
110123 RegisterInstance ( this ) ;
111124
125+ HandleAdditive ( ) ;
126+
112127 switch ( mSwitchSceneType )
113128 {
114129 case JCS_SwitchSceneType . BLACK_SCREEN :
@@ -130,7 +145,7 @@ private void Awake()
130145
131146#if UNITY_EDITOR
132147 // add the tool in editor mode.
133- this . gameObject . AddComponent < ReadSceneNames > ( ) ;
148+ gameObject . AddComponent < ReadSceneNames > ( ) ;
134149#endif
135150 }
136151
@@ -174,7 +189,7 @@ private void Start()
174189 {
175190 // get the component.
176191 if ( mFadeSound == null )
177- mFadeSound = this . gameObject . AddComponent < JCS_FadeSound > ( ) ;
192+ mFadeSound = gameObject . AddComponent < JCS_FadeSound > ( ) ;
178193
179194 AudioSource bgmAS = JCS_BGMPlayer . instance . audioSource ;
180195
@@ -210,6 +225,20 @@ private void Update()
210225 DoExitSwitchScene ( ) ;
211226 }
212227
228+ /// <summary>
229+ /// Handle additive scene overlays.
230+ /// </summary>
231+ private void HandleAdditive ( )
232+ {
233+ foreach ( string sceneName in mOverlaySceneNames )
234+ {
235+ if ( mUseAsync )
236+ SceneManager . LoadSceneAsync ( sceneName , LoadSceneMode . Additive ) ;
237+ else
238+ SceneManager . LoadScene ( sceneName , LoadSceneMode . Additive ) ;
239+ }
240+ }
241+
213242 #region Load Scene
214243
215244 /// <summary>
@@ -315,7 +344,7 @@ public void LoadScene(string sceneName, LoadSceneMode mode,
315344 {
316345 // get the component.
317346 if ( mFadeSound == null )
318- mFadeSound = this . gameObject . AddComponent < JCS_FadeSound > ( ) ;
347+ mFadeSound = gameObject . AddComponent < JCS_FadeSound > ( ) ;
319348
320349 AudioSource bgmAudioSource = JCS_BGMPlayer . instance . audioSource ;
321350
0 commit comments