Appearance
第09回 音声の管理と再生
2 / 4 状態遷移へBGMを接続する
このステップの目的
タイトル、プレイ、結果の状態へBGMの開始と停止を接続する
BGMを重ねない
PlayBgm()は現在のBGMを停止してから新しいBGMを再生します。 状態が変わる場所をChangeState()へ集約したため、BGMの切り替えも同じ場所へ置けます。
Game.cppcpp
void Game::ChangeState(State nextState)
{
state = nextState;
switch (state)
{
case State::Title:
sounds.PlayBgm(SoundId::TitleBgm);
break;
case State::Playing:
sounds.PlayBgm(SoundId::PlayingBgm);
break;
case State::GameClear:
sounds.StopBgm();
sounds.PlaySe(SoundId::Clear);
break;
case State::GameOver:
sounds.StopBgm();
sounds.PlaySe(SoundId::GameOver);
break;
}
}状態を変更する場所ごとにBGMを操作せず、状態に入ったときの処理として一つへ集めます。
チェックリスト
- 状態ごとのBGMが決まっている
- BGM切り替えを
ChangeState()へ集約している - 結果画面でプレイ中BGMが残らない