今回はスクリプトにより指定したBGMを、ゲームを起動したタイミングで再生させる方法について説明します。Unity基礎13ではAudioSourceコンポーネントのAudioClipに再生させたい音楽を直接ドラッグ&ドロップして指定していましたが、今回は再生させたい音楽をスクリプトを介して指定します。この方法は次回説明する「特定のタイミングで音楽を再生させる方法」を理解する上で重要な要素となりますので、是非ご覧いただければと思います。
準備
イメージ
今回も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という名前でオブジェクトを作成することとします。
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つの機能で成り立っています。
①再生させたい音楽をスクリプトにより操作できるようにする機能
②指定した音楽を再生させる機能
先ずは①に関連する部分から概要を説明すると以下の通りです。
7行目:音楽を再生させるため、AudioSourceコンポーネントのPlayメソッドを使うために定義。
次には②に関連する部分から概要を説明すると以下の通りです。
10行目:7行目で定義した変数Audioが表すものがなんであるかを認識させる構文。このスクリプトがアタッチされたオブジェクトに付与されているAudioSourceコンポーネントを認識させる。これにより変数AudioがBGMPlayerオブジェクトに付与されたAudioSourceを表すことになる。
11行目:音楽を再生させるための構文。変数BGMが表す音楽を再生する。
STEP5:スクリプトをAudioSourceが付与されたオブジェクトにアタッチする
スクリプトが完成したので、続いて作成したスクリプトをAudioSourceコンポーネントが付与されたオブジェクトにアタッチします。今回の例では下図のようにBGMPlayerオブジェクトにPlayBGMスクリプトをアタッチします。
STEP6:スクリプトに操作したいAudioClip(音楽)を認識させる
STEP5でBGMPlayerにスクリプトをアタッチすると下図のように、インスペクターウィンドウ上でBGMという箱ができます。そこに再生させたい音楽ファイルをドラッグ&ドロップします。
STEP7:AudioSourceの設定を変更する
最後にAudioSourceの設定を自分が再生させたい用途に合わせて変更します。具体的な方法としては、下図のようにBGMPlayer(AudioSourceが付与されたオブジェクト)を選択し、インスペクターウィンドウにあるAudioSource内の各設定項目を変更するだけです。今回はゲーム再生時に音楽を再生させる機能はスクリプトに持たせているため、PlayOnAwakeの部分にチェックを外します。
機能テスト
ここまでできたらPlayボタンを押してゲームを起動させ、処理が想定どおりに行われているか確認しましょう。実際に起動させてみた結果、設定したBGMが再生されれば成功です。
今回はスクリプトにより指定したBGMを、ゲームを起動したタイミングで再生させる方法について説明しましたがいかがだったでしょうか。スクリプトを使用して音楽が指定できるようになれば、攻撃ボタンを押した時に効果音を再生させるなど、様々な場面で応用できるようになると思います。今回の内容が皆様のゲーム制作に少しでも役立てば幸いです。
以上。
コメント