楽しいゲームを作るには、 BGM が必要ですよね。この記事では、Unity のゲームで BGM(音楽)を流す2パターンの方法について説明します。1つ目は、Unity だけで設定できる簡単な方法、2つ目は、プログラムを使う少し難しい方法です。場面に合わせて、実装してみてください。
目次
事前準備「流したい音楽を決める」
STEP1:使用する音楽を格納するためのフォルダを作成する
上図のように、Assets フォルダに Audioフォルダを作成します。さらにその下に、BGM と SE のフォルダを作ります。(参考:Assets 内のおすすめのフォルダ構成)
STEP2:流したい音楽を探す
フリーの音楽は、「DOVA-SYNDROME」、「甘茶の音楽工房」、「魔王魂」などが有名です。Unity の AssetStore には「オーディオ」のカテゴリーがあり、そこから音楽を探すこともできます。
Unity がサポートしているオーディオのファイル形式は、.aif、.wav、.mp3、.ogg、です。
Unity 内のオーディオファイルをシングルクリックすると、「インスペクター」ビューにオーディオ情報が表示されます。その中に「再生」のアイコンがあります。これをクリックすると音楽を聴くことができます。
オーディオファイルをダブルクリックすると、既定のメディアプレイヤーが起動します。
STEP3:流したい音楽を、BGM フォルダに格納する
ここでは、AssetStore で無料で公開されている「SunnyLand Artwork」にある音楽「hurry_up_and_run」を使うことにします。
下図のように、Assets フォルダ内の BGM フォルダに曲をコピーします。
STEP4:ヒエラルキーに音楽用のゲームオブジェクトを作成する
AudioControl という名前にしました。
これで事前準備は終わりです。
方法①「Unity の設定で BGM が流れるようにする」
手順
STEP1:音楽ファイルを最適化する(Audio Clip 設定)
BGM フォルダ内の音楽を選択します。インスペクター(Audio Clip)が表示されるので、こちらのサイトの「BGM(アプリ起動直後に使う)」の設定にします。「適用する」ボタンを押します。
STEP2:AudioControl に音楽をアタッチする
BGM フォルダ内の曲を AudioControl のインスペクターの空いているところにドラッグアンドドロップします。
「ゲーム開始時に再生」にチェックがついていればゲーム開始時に自動で音楽が再生されます。
「ループ」にチェックを入れれば、繰り返し音楽を流すことができます。
これで設定は完了です。ゲームをプレイしてみてください。音楽は流れますか?
方法②「プログラムで BGM を制御する」
手順
STEP1:音楽ファイルを最適化する(Audio Clip 設定)
BGM フォルダ内の音楽を選択します。インスペクター(Audio Clip)が表示されるので、こちらのサイトの「BGM(アプリ起動直後に使わない)」の設定にします。「適用する」ボタンを押します。
STEP2:AudioControl に AudioSource を追加する
「コンポーネントを追加」⇒「Audio」⇒「Audio Source」と選択していきます。AudioSource は音楽を鳴らすプレイヤーのような役割があります。
STEP3:プロジェクトに AudioController ファイルを作成する
下図のように、「Scripts」フォルダの下にファイルを作成します。
AudioController ファイルの中身は以下の通りです。
using UnityEngine;
public class AudioController : MonoBehaviour
{
[SerializeField] private AudioClip BGM;
private AudioSource audioPlayer;
private double elapsedTime;
private void Start()
{
audioPlayer = GetComponent<AudioSource>();
audioPlayer.clip = BGM;
elapsedTime = 0;
}
private void Update()
{
elapsedTime += Time.deltaTime;
if (5 < elapsedTime)
{
if (!audioPlayer.isPlaying)
{
audioPlayer.clip = BGM;
audioPlayer.Play();
}
}
}
}
■5行目:BGM(インスタンス変数)
Unity エディタで、BGM にする音楽ファイルをアタッチします。
■9行目:elapsedTime(インスタンス変数)
経過時間を計測するために利用します。
■14行目:
audioPlayer に BGM をセットします
■21行目:
Start メソッドが実行されてから5秒後に音楽がなるようにします。
■23行目:
再生中のときは、重複して再生しないようにします。
今回の例では説明を簡単にするため、5秒後に音楽が流れるようにしました。本来のゲームであれば、ゲームの状態(オープニング画面、ゲーム中、エンディング画面など)に合わせて音楽を流すようにしてみてください。
STEP4:AudioController ファイルを AudioController に紐づける
① プロジェクトの中の AudioController ファイルを AudioControl のインスペクタービューにアタッチします。
② BGM フォルダの中の曲を選択し、インスペクタービュー内の AudioController の BGM にアタッチします。
以上で、音楽をプログラムで制御する方法の解説を終わります。