public void SetGameState(EState state) { GameState = state; switch (state) { case EState.Reset: Player.ResetData(); foreach (var child in GhostList) { child.ResetData(); } SetGameState(EState.Prepare); break; case EState.Prepare: CurrentStage.SetActiveReadyText(true); AudioManager.Instance.PlaySound(EBgmId.StartMusic); AudioManager.Instance.SetVolume(0.5f); StartCoroutine(CountDownPrepareTime()); break; case EState.Play: AudioManager.Instance.SetVolume(1.0f); AudioManager.Instance.PlayRandomBgm(); AudioManager.Instance.PlayGhostSound(true); CurrentStage.SetActiveReadyText(false); break; case EState.PacManDie: Player.Die(); lifeCount--; StageUIManager.Instance.SetLifeCount(lifeCount); StartCoroutine(CountDownResetTime()); break; case EState.GameOver: AudioManager.Instance.StopBgm(); StartCoroutine(StartGameOverAnimation()); break; case EState.StageOver: AudioManager.Instance.StopBgm(); AudioManager.Instance.PlayGhostSound(false); fruitIndex++; StartCoroutine(CountDownStageOverTime()); ScoreManager.Instance.SaveCurrentScore(); break; } }