【Unity基礎14】スクリプトを使って指定した音楽を再生させる方法

Unity基礎

今回はスクリプトにより指定したBGMを、ゲームを起動したタイミングで再生させる方法について説明します。Unity基礎13ではAudioSourceコンポーネントのAudioClipに再生させたい音楽を直接ドラッグ&ドロップして指定していましたが、今回は再生させたい音楽をスクリプトを介して指定します。この方法は次回説明する「特定のタイミングで音楽を再生させる方法」を理解する上で重要な要素となりますので、是非ご覧いただければと思います。

準備~スクリプトを使って指定した音楽を再生させる方法 STEP2まではUnity基礎13と同様の内容ですので、必要に応じて読み飛ばしていただいても結構です。

準備

イメージ

今回もUnity基礎13同様、下図のようにUnityのPlayボタンを押した際、予め設定したBGMが再生されるようにすることとします。

BGM(再生する音楽)の用意

BGMを再生させる方法を説明する前に今回設定するBGMを用意しておきます。

今回は下記サイト様の無料素材を使用させていただきます。

音楽素材提供元:魔王魂様
URL:https://maou.audio/rule/
使用させて頂いた素材:ボス07
URL:https://maou.audio/category/game/game-battle/
上記音楽の著作権は「魔王魂」様に帰属します。取り扱いについては上記サイト様のルールに則ってください。

素材がダウンロードできたら、下図のようにプロジェクトウィンドウのAssetsフォルダ直下に上記音楽素材をドラッグ&ドロップします。

スクリプトを使って指定した音楽を再生させる方法

必要な準備が整ったので、スクリプトにより指定したBGMを、ゲームを起動したタイミングで再生させる方法について説明していきます。

STEP1:音楽再生をさせるコンポーネントを持たせるオブジェクトを作成する

音楽を再生させるためにはオブジェクトにAudioSourceコンポーネントを追加する必要があります。その前段階としてAudioSourceコンポーネントを付与させるオブジェクトが必要となりますので、先ずはオブジェクトを作成します。今回は下図のように空のオブジェクトを作成し、BGMPlayerという名前でオブジェクトを作成することとします。

AudioSourceは音源なので、音楽の再生機器としての能力をオブジェクトに持たせるというイメージを持てばいいかと思います。

STEP2:作成したオブジェクトにAudioSourceコンポーネントを追加する

次にSTEP1で作成したオブジェクト(BGMPlayer)にAudioSourceコンポーネントを追加します。具体的には下図のようにヒエラルキーウィンドウでBGMPlayerを選択し、インスペクターウィンドウでAddComponentボタンを押し、AudioSourceコンポーネントを検索して追加するという手順を踏みます。

STEP3:BGMを認識・再生させるためのスクリプト作成する

次に再生させたいBGMを認識・再生させるスクリプト作成します。今回は下図のようにPlayBGMという名前でスクリプトを作成しました。

STEP4:スクリプトにBGMを認識・再生させるための機能を実装する

スクリプトを作成したらそれを編集し、スクリプトにBGMを認識・再生させるための機能を実装します。

先にスクリプトの内容を示すと下記の通りです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayBGM : MonoBehaviour
{
    [SerializeField] AudioClip BGM = null;//再生させる音楽であるAudioClipとの連携のために導入
    AudioSource Audio;//音楽を再生させるためにAudioSourceコンポーネントのPlayメソッドを使うために定義する
    void Start()
    {
        Audio = GetComponent<AudioSource>();//このスクリプトがアタッチされたオブジェクトに付与されているAudioSourceコンポーネントを認識させる
        Audio.PlayOneShot(BGM);//変数BGMが表す音楽を再生する
    }
}
スクリプトの解説

上記スクリプトでは大きく分けて以下の2つの機能で成り立っています。

①再生させたい音楽をスクリプトにより操作できるようにする機能

②指定した音楽を再生させる機能

先ずは①に関連する部分から概要を説明すると以下の通りです。

6行目:再生させる音楽であるAudioClipとの連携のために導入。連携されたAudioClipをBGMという変数としてスクリプトで操作できるようになる。
7行目:音楽を再生させるため、AudioSourceコンポーネントのPlayメソッドを使うために定義。

次には②に関連する部分から概要を説明すると以下の通りです。

8~12行目:ゲーム起動時に呼び出される内容。
10行目:7行目で定義した変数Audioが表すものがなんであるかを認識させる構文。このスクリプトがアタッチされたオブジェクトに付与されているAudioSourceコンポーネントを認識させる。これにより変数AudioがBGMPlayerオブジェクトに付与されたAudioSourceを表すことになる。
11行目:音楽を再生させるための構文。変数BGMが表す音楽を再生する。

STEP5:スクリプトをAudioSourceが付与されたオブジェクトにアタッチする

スクリプトが完成したので、続いて作成したスクリプトをAudioSourceコンポーネントが付与されたオブジェクトにアタッチします。今回の例では下図のようにBGMPlayerオブジェクトにPlayBGMスクリプトをアタッチします。

STEP6:スクリプトに操作したいAudioClip(音楽)を認識させる

STEP5でBGMPlayerにスクリプトをアタッチすると下図のように、インスペクターウィンドウ上でBGMという箱ができます。そこに再生させたい音楽ファイルをドラッグ&ドロップします。

この作業により、先ほどスクリプトで宣言した変数BGMと再生させたい音楽ファイルが結びつきます。結果として変数BGMを変数AudioのPlayメソッドで再生させたい音楽として指定することで好みの音楽を再生できるようになるというわけです。

STEP7:AudioSourceの設定を変更する

最後にAudioSourceの設定を自分が再生させたい用途に合わせて変更します。具体的な方法としては、下図のようにBGMPlayer(AudioSourceが付与されたオブジェクト)を選択し、インスペクターウィンドウにあるAudioSource内の各設定項目を変更するだけです。今回はゲーム再生時に音楽を再生させる機能はスクリプトに持たせているため、PlayOnAwakeの部分にチェックを外します。

機能テスト

ここまでできたらPlayボタンを押してゲームを起動させ、処理が想定どおりに行われているか確認しましょう。実際に起動させてみた結果、設定したBGMが再生されれば成功です。

今回はスクリプトにより指定したBGMを、ゲームを起動したタイミングで再生させる方法について説明しましたがいかがだったでしょうか。スクリプトを使用して音楽が指定できるようになれば、攻撃ボタンを押した時に効果音を再生させるなど、様々な場面で応用できるようになると思います。今回の内容が皆様のゲーム制作に少しでも役立てば幸いです。

以上。

-ゲームアプリ「HelloAnotherWorld」ダウンロードのお願い-

私が作成したゲームアプリ「HellowAnotherWorld」をダウンロードしていただけると嬉しいです。
有料ではありますが、ペットボトル飲料一本分程度の値段ですので、是非お願いします。
皆様にもメリットがあり、「このサイトで勉強すればこの程度のアプリであれば自分一人で作成できるようになる」という一つの目安にもなるかと思います。

-ゲームアプリ「HelloAnotherWorld」ダウンロードのお願い-

私が作成したゲームアプリ「HellowAnotherWorld」をダウンロードしていただけると嬉しいです。
有料ではありますが、ペットボトル飲料一本分程度の値段ですので、是非お願いします。
皆様にもメリットがあり、「このサイトで勉強すればこの程度のアプリであれば自分一人で作成できるようになる」という一つの目安にもなるかと思います。

スポンサーリンク
HelloAnotherWorld
HelloAnotherWorld
¥120
posted withアプリーチ
Unity基礎
ソフィーのUnity講座

コメント