SoundManager クラスは、
シングルトンデザインパターンによって作成されています。
そのため GameData クラスと同じように、
いずれのスクリプトからでも自由に参照して、メソッドを実行することが可能です。
BGM や SE の再生のたびに、各スクリプト内に SoundManager スクリプトの変数を用意して取得をしていると、
例えば、エネミーが SE を再生したいとなった場合、生成されるたびに SoundManager スクリプトの参照を取得する必要が生まれます。
こういった【
複数のスクリプトから参照される用途があり、汎用的に利用される情報】については、
シングルトンデザインパターンを採用することにより、各スクリプト内に新しい変数を追加する必要もなくなり、
BGM や SE の再生処理についてもメソッドを実行する命令文を1行記述すれば済みます。
BGM を再生する場面として、ゲームの開始時があります。
現在、ゲームを開始した際の進行状態は GameManager スクリプトの Start メソッドを利用して初期設置の管理を行っていますので、
GameManager スクリプトから SoundManager スクリプトに用意した
BGMを再生するメソッドを呼び出すように処理を追加して、メインとなる BGMの再生処理を実行します。
今回はもう1つ BGM を用意してあります。これは BOSS とのバトル用の BGM になりますので、
ボスの出現に合わせて再生する BGM を切り替えたいと思います。
ボスの出現時には
警告の演出がありますので、
この演出に合わせて、場面に応じたBGMの切り替え処理を実装します。
この処理はボスの演出などを追加した際に、実装する予定として覚えておいてください。
TODO を記述しておくといいでしょう。
SoundManager クラスに記述したメソッドは、GameData クラスと同じように、【
クラス名.クラスの代入されている変数名.実行したい変数名かメソッド名(引数の指定)】の書式で記述します。
<シングルトンクラスのメソッドの実行命令>
SoundManager.instance.PlayBGM(SoundDataSO.BgmType.Main);
引数に BgmType を指定することにより、指定した BgmType の設定されている BgmData が参照されて利用される設計になっています。