6-4BGMを鳴らす【Unityゲーム開発の基礎】作って学ぶブロック崩し
ブロック崩しを作りながらUnityを学んでいこう!
フェーズ1で「ブロック崩しの骨格」を作り
フェーズ2で「見た目をかっこよく」して
フェーズ3で「タイトル画面やゲームオーバーなどの画面」を作って
フェーズ4で「アニメーション」させて
フェーズ5で「ステージを増やす」ことができました。
フェーズ6の目標は「音を鳴らす」です。
今回はBGMです。
裏で音楽がなっているだけでグッとゲームっぽくなりますね。
AudioSourceコンポーネントを追加
効果音の時と同様に使うのは AudioSourceコンポーネントです。
効果音用のものとは別に、BGM用としてもう一つ AudioSourceを追加します。
MainManagerオブジェクトの Inspector からAudioSourceコンポーネントを追加します。BGMはループ再生された方がよいのでLoopにチェックを入れておきましょう。
スクリプトからAudioSourceコンポーネントにアクセスする時、GetComponentメソッドを使っていました。
オブジェクトに追加されたAudioSourceコンポーネントが1つの時は問題ないですが、複数追加したすべてを取得したい場合はGetComponentsメソッドを使うと配列で複数取得できます。
public class MainManagerBehaviour : MonoBehaviour
{
:
:
private AudioSource[] audioSources; //←配列にして
void Start()
{
audioSources = GetComponents<AudioSource>(); //←複数取得
:
}
}
音源を紐づけ
MainManagerBehaviourにBGM用のAudioClipをメンバ変数として追加します。
public class MainManagerBehaviour : MonoBehaviour
{
:
:
public AudioClip gameTitleBGM; //←ココを追加
public AudioClip gameCompleteBGM; //←ココを追加
public AudioClip gamePlayBGM; //←ココを追加
:
:
}
Inspectorからこの変数にそれぞれ音源ファイルを紐づけます。
スクリプトで音を鳴らす
AudioSourceコンポーネントを配列で取得していますが、
1番目をSE用、2番目をBGM用として使用することにします。
public class MainManagerBehaviour : MonoBehaviour
{
public void OnNewGameButtonClicked()
{
:
:
audioSources[0].PlayOneShot(gamePlayES);
audioSources[1].Stop();
audioSources[1].clip = gamePlayBGM;
audioSources[1].Play();
}
public void OnNextStageButtonClicked()
{
:
:
audioSources[0].PlayOneShot(gamePlayES);
audioSources[1].Stop();
audioSources[1].clip = gamePlayBGM;
audioSources[1].Play();
}
public void OnContinueButtonClicked()
{
:
:
audioSources[0].PlayOneShot(gamePlayES);
audioSources[1].Stop();
audioSources[1].clip = gamePlayBGM;
audioSources[1].Play();
}
public void OnReturnToTitleButtonClicked()
{
:
:
audioSources[0].PlayOneShot(gamePlayES);
audioSources[1].Stop();
audioSources[1].clip = gameTitleBGM;
audioSources[1].Play();
}
public void OnEnemyUnitDead()
{
:
:
audioSources[0].PlayOneShot(gameClearES);
audioSources[1].Stop();
audioSources[1].clip = gameTitleBGM;
audioSources[1].Play();
}
public void OnBallLost()
{
:
:
audioSources[0].PlayOneShot(gameOverES);
audioSources[1].Stop();
}
}
BGMを鳴らす場合はAudioSourceのPlayを呼び出します。
複数の音源を場面に合わせて切り替えているのでStopを呼び出して停止させた後、音源を差し替えてからPlayを呼び出しています。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?