コンテンツへスキップ

【Unity】ゲームで BGM(音楽)を流す方法

楽しいゲームを作るには、 BGM が必要ですよね。この記事では、Unity のゲームで BGM(音楽)を流す2パターンの方法について説明します。1つ目は、Unity だけで設定できる簡単な方法、2つ目は、プログラムを使う少し難しい方法です。場面に合わせて、実装してみてください。

事前準備「流したい音楽を決める」

STEP1:使用する音楽を格納するためのフォルダを作成する

unity-bgm1

上図のように、Assets フォルダに Audioフォルダを作成します。さらにその下に、BGM と SE のフォルダを作ります。(参考:Assets 内のおすすめのフォルダ構成

STEP2:流したい音楽を探す

フリーの音楽は、「DOVA-SYNDROME」、「甘茶の音楽工房」、「魔王魂」などが有名です。Unity の AssetStore には「オーディオ」のカテゴリーがあり、そこから音楽を探すこともできます。

Unity がサポートしているオーディオのファイル形式は、.aif、.wav、.mp3、.ogg、です。

Unity 内のオーディオファイルをシングルクリックすると、「インスペクター」ビューにオーディオ情報が表示されます。その中に「再生」のアイコンがあります。これをクリックすると音楽を聴くことができます。

unity-bgm3

オーディオファイルをダブルクリックすると、既定のメディアプレイヤーが起動します。

STEP3:流したい音楽を、BGM フォルダに格納する

ここでは、AssetStore で無料で公開されている「SunnyLand Artwork」にある音楽「hurry_up_and_run」を使うことにします。

下図のように、Assets フォルダ内の BGM フォルダに曲をコピーします。

unity-bgm2

STEP4:ヒエラルキーに音楽用のゲームオブジェクトを作成する

AudioControl という名前にしました。

unity-bgm5

これで事前準備は終わりです。

方法①「Unity の設定で BGM が流れるようにする」

手順

STEP1:音楽ファイルを最適化する(Audio Clip 設定)

unity-bgm4

BGM フォルダ内の音楽を選択します。インスペクター(Audio Clip)が表示されるので、こちらのサイトの「BGM(アプリ起動直後に使う)」の設定にします。「適用する」ボタンを押します。

STEP2:AudioControl に音楽をアタッチする

unity-bgm6

BGM フォルダ内の曲を AudioControl のインスペクターの空いているところにドラッグアンドドロップします。

unity-bgm7

「ゲーム開始時に再生」にチェックがついていればゲーム開始時に自動で音楽が再生されます。

「ループ」にチェックを入れれば、繰り返し音楽を流すことができます。

これで設定は完了です。ゲームをプレイしてみてください。音楽は流れますか?

方法②「プログラムで BGM を制御する」

手順

STEP1:音楽ファイルを最適化する(Audio Clip 設定)

unity-bgm8

BGM フォルダ内の音楽を選択します。インスペクター(Audio Clip)が表示されるので、こちらのサイトの「BGM(アプリ起動直後に使わない)」の設定にします。「適用する」ボタンを押します。

STEP2:AudioControl に AudioSource を追加する

「コンポーネントを追加」⇒「Audio」⇒「Audio Source」と選択していきます。AudioSource は音楽を鳴らすプレイヤーのような役割があります。

unity-bgm9
unity-bgm10

STEP3:プロジェクトに AudioController ファイルを作成する

下図のように、「Scripts」フォルダの下にファイルを作成します。

unity-bgm11

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 に紐づける

unity-bgm12

① プロジェクトの中の AudioController ファイルを AudioControl のインスペクタービューにアタッチします。

unity-bgm13

② BGM フォルダの中の曲を選択し、インスペクタービュー内の AudioController の BGM にアタッチします。

以上で、音楽をプログラムで制御する方法の解説を終わります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA