IEnumerator StartGame(bool isNewGame) { yield return(new WaitForSeconds(uiHandler.uiEffectHandler.OnPlayUIEffect(UIEffect.Transition_CrossFade, UIEffectAnimationClip.start))); ResetAllSceneCode(); // uiHandler.uiEffectHandler.OnPlayUIEffect(UIEffect.Transition_CrossFade, UIEffectAnimationClip.dark); if (isNewGame) { player.gameObject.SetActive(true); currentSceneCode = DefaultStartScene; player.InitSaveData(); EnemySaveData.Initialize(); Loot.Initialize(); LittleSunData.Initialize(); if (DefaultStartPoint) { player.SetPosition(DefaultStartPoint.position); player.playerRuntimeData.lastPosition = DefaultStartPoint.position; } } else { player.gameObject.SetActive(true); yield return(new WaitForEndOfFrame()); gameSaver.LoadAll(); yield return(new WaitUntil(() => gameSaver.IsLoaded())); yield return(new WaitForEndOfFrame()); // yield return new WaitForSeconds(5f); currentSceneCode = player.playerRuntimeData.currentSceneCode; elapsedSeconds = gameSaver.GetSaveSlotMeta(gameSaver.currentSaveSlot).elapsedSeconds; } uiHandler.StartGame(); player.InputHandler.ResetAll(); player.InitializeRuntimeData(); LoadSceneCode(); player.stateMachine.InitializeState(player.wakeupState); Camera.main.GetComponent <BasicFollower>().ClampCamera(player.transform.position); Camera.main.GetComponent <BasicFollower>().UpdateCameraFollowing(player.transform); yield return(new WaitForSeconds(uiHandler.uiEffectHandler.OnPlayUIEffect(UIEffect.Transition_CrossFade, UIEffectAnimationClip.end))); }