
ごきげんよう、Budding Lab.編集部のゆくすぃです!
世界の街並みや自然を散策できるVRコンテンツを待ち望んでいたんですが、遂に、サブスクリプションで見つけちゃいました!
ゲームが大好きな皆さんなら、一度は「自分でゲームを作ってみたい!」と、思ったことがあるのではないでしょうか?
本連載では、ゲーム開発初心者のゆくすぃが、基礎的なスクリプトだけを使って、超入門・2D脱出ゲームの作り方を解説します!
本記事は、第7回「BGM・SEの設定編」です。
プログラミングの専門知識がなくたって、画像や音楽作成アプリが使えなくたって、案外、ゲームって作れるものです。興味が湧いたなら、ぜひ挑戦してみてください!
BGM・SE(効果音)素材をプロジェクトに追加する
まず、プロジェクトの「Assetsフォルダ」内に、音素材を保存する「Soundsフォルダ」を作成します。
Projectウインドウの中で右クリックすると、コンテキストメニューが表示されます。その中から「Create」を選び、追加で展開されるメニューの中から「Folder」を選んでクリックします。


すると、新しいフォルダが追加されるので、名前を入力して確定します。今回は「Sounds」としました。
準備しておいたBGM・SE(効果音)素材は、すべてこのSoundsフォルダ内にドラッグ&ドロップして保存します。
因みに、Unityが対応している音声ファイル形式は「.mp3」「.wav」「.aiff / .aif」「.ogg」です。
BGMを設定する
TitleSceneで「Game Start」をクリックしたら、シーンがGameSceneへ切り替わり、ゲームが開始します。そのタイミングでBGMを鳴らしてみましょう。
HierarchyウインドウでParentPanelを選択し、Inspectorウインドウの「Add Component」で「Audio」と入力して、Audio Sourceコンポーネントを追加します。
Inspectorウインドウの「Add Component」でAudio Sourceコンポーネントを追加する


Audio Sourceコンポーネントが追加されたら、以下のようにプロパティを設定します。


- AudioClip:鳴らしたいBGM素材を参照
- Play On Awake:チェックを入れる = ゲームが起動すると自動的にBGMが再生される
- Loop:チェックを入れる = ループ再生される
- Volume:必要に応じて調整
- Spatial Blend:0.0で2D音声、1.0で3D音声。今回は2Dゲームなので「0.0」設定
再生モードでプロジェクトを実行する
エディター画面のツールバーにある「▶(再生ボタン)」をクリックすると、Gameビューに切り替わり、再生モードでプロジェクトが実行されます。
ゲーム開始後、自動的にBGMが流れればOKです!
GameビューからSceneビューに戻るには、もう一度、再生ボタンをクリックします。
SE(効果音)を鳴らすスクリプトを準備する
ボタンをクリックした時、アイテムを入手した時、脱出口が出現した時、脱出口をクリックした時・・・プレイヤーが起こした様々なアクションに対し、それに応えるSE(効果音)を鳴らしましょう。
SEを鳴らすスクリプトを書く
Scriptフォルダの中に「C# スクリプト」を新規作成し、名前を入力して確定します。今回は「SEController」としました。
スクリプト:SEControllerを開き、以下のようにスクリプトを書きます。
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class SEController : MonoBehaviour
6 {
7 [SerializeField] private AudioClip _se00; // AudioClip変数:_se00を定義
8 [SerializeField] private AudioClip _se01; // AudioClip変数:_se01を定義
9 [SerializeField] private AudioClip _se02; // AudioClip変数:_se02を定義
10
11 AudioSource audioSource; // AudioSource変数:audioSourceを定義
12
13 void Start()
14 {
15 // このスクリプトがアタッチされているGameObjectのAudio Sourceコンポーネントを取得
16 audioSource = GetComponent<AudioSource>();
17 }
18
19 public void OnClick00()
20 {
21 audioSource.PlayOneShot(_se00); // 一度だけ_se00を鳴らす
22 }
23
24 public void OnClick01()
25 {
26 audioSource.PlayOneShot(_se01); // 一度だけse01を鳴らす
27 }
28
29 public void OnClick02()
30 {
31 audioSource.PlayOneShot(_se02); // 一度だけse02を鳴らす
32 }
33 }
7行目から9行目で「AudioClip変数:_se00, _se01, _se02」を定義しています。
これで、このスクリプトをアタッチするゲームオブジェクトのInspectorウインドウに、3つの音声ファイルをセットできるようになります。
11行目で「AudioSource変数:audioSource」を定義しています。
更に、13行目から17行目までのStartメソッドの中で以下の処理を行い、このスクリプトをアタッチするゲームオブジェクトのAudio Sourceコンポーネントを操作できるようにしています。
audioSource = GetComponent<AudioSource>();
→「AudioSouce変数:audioSource」に、このスクリプトをアタッチするゲームオフジェクトのAudio Sourceコンポーネントを取得して代入(= Audio Sourceコンポーネントを操作できる)。
19行目から22行目の「OnClick00メソッド」は「AudioClip変数:_se00」にセットした音声ファイルを、一度だけ鳴らす処理を呼び出します。
AudioSource.PlayOneShotは、AudioClipを一度だけ再生する。
同様に、24行目から27行目の「OnClick01メソッド」は「AudioClip変数:_se01」にセットした音声ファイルを、29行目から32行目の「OnClick02メソッド」は「AudioClip変数:_se02」にセットした音声ファイルを、それぞれ一度だけ鳴らす処理を呼び出します。
スクリプトをアタッチする
「スクリプト:SEController」をアタッチするゲームオブジェクトを作成します。
Hierarchyウインドウ左上の「+」をクリックし、コンテキストメニューから「Create Empty」を選んでクリックします。空のゲームオブジェクトが作成されるので、名前を入力して確定します。
ここでは「SE」としました。
「スクリプト:SEController」をアタッチするために「空のゲームオブジェクト:SE」を作成




Hierarchyウインドウで「ゲームオブジェクト:SE」を選択し、Inspectorウインドウの「Add Component」で「Audio」と入力して、Audio Sourceコンポーネントを追加します。
更に「SE」と入力して「スクリプト:SEController」をアタッチします。


SE Controller(Script)
- Se 00:音声ファイルを参照(ボタン・脱出口クリック音)
- Se 01:音声ファイルを参照(アイテム入手音)
- Se 02:音声ファイルを参照(脱出口出現音)
Audio Sourceコンポーネント
- Play On Awake:チェックを外す
- Volume:必要に応じて調整
- Spatial Blend:0.0で2D音声、1.0で3D音声。今回は2Dゲームなので「0.0」設定
ゲームオブジェクトごとにOnClickイベントでメソッドを呼び出す
今回作成するゲームでは、下図のような仕組みでSEを鳴らします。
SEを鳴らすスクリプト:SEControllerを作成し、それを空のゲームオブジェクト:SEにアタッチ。AudioSource変数:_se00, _se01, _se02に、音声ファイルを参照させたところまで完了しています。
これから、ボタンやアイテム・脱出口でOnClickイベントが発生した際、スクリプト:SEControllerの中にあるOnClick00, 01, 02メソッドの中から、適切なメソッドを呼び出せるように設定していきます。


アイテムクリック音を設定する
Room1, Room2, Room3に1つずつ配置しているアイテム(Candy)にクリック音を設定します。
- Candy1に「Buttonコンポーネント」を追加する
- OnClickイベントに「空のゲームオブジェクト:SE」を参照させる
- OnClickイベントに「OnClick01メソッド」をセットする
UI >Image で配置したcandy.pngにはButtonコンポーネントがないので、inspectorウインドウの「Add Component」からButtonコンポーネントを追加します。
すると、OnClickイベントを使えるようになるので「None(Object)」に「空のゲームオブジェクト:SE」をドラッグ&ドロップします。
さらに「No Function」でドロップダウンメニューから「SEController > OnClick01」を選んでクリックします。
Room1 のCandy1にOnClick01メソッドを設定した


Room2のCandy2・Room3のCandy3にも、同様にアイテムクリック音を設定してください。
設定ができたら、再生モードでプロジェクトを実行し、クリック音が鳴ることを確認しましょう!
脱出口クリック音を設定する
Room1に配置している脱出口(Exit)にクリック音を設定します。
手順はCandyにクリック音を設定した時と全く同じです。ただ、OnClickイベントにセットするのは「OnClick00メソッド」となります。
こちらも、設定ができたら再生モードにして、クリック音が鳴ることを確認してください。



OnClick02メソッド(=脱出口出現音)の設定がまだですが、こちらは脱出に必要なアイテムが揃った(=脱出条件達成)と同時に鳴らしたいので、第9回に持ち越します!
ボタンクリック音を設定する
「ボタン:Game Start」「ボタン:Play Again」にクリック音を設定します。
アイテム(Candy)や脱出口(Exit)とは別の方法でやってみましょう。
まずは、TitleSceneを開きます。
Hierarchyウインドウで「+」をクリックし「Audio >Audio Source」を選んでクリックします。Audio Sourceが追加されるので、名前を入力して確定します。
今回は「Audio」としました。


AudioのAudio Sourceコンポーネントは以下の通りです。デフォルトで入っている「Play On Awake」のチェックは外しています。


Hierarchyウインドウで「ボタン:Game Start」を選択し、inspectorウインドウのOnClickイベントで「Add to the list」をクリックします。
「None(Object)」にHierarchyウインドウから「Audio」をドラッグ&ドロップします。
「No Function」でドロップダウンメニューから「AudioSource >PlayOneShot」を選んでクリックします。
「None(Audio Clip)」に鳴らしたい音声ファイルを参照させます。


以上で、ボタンクリック音の設定は完了です。設定後に、再生モードで音が鳴ることを確認します。
同様にClearSceneでも設定してください。
まとめ
今回の記事では、BGM・SEの設定について解説しました。
シーンが読み込まれた直後から自動的に音を鳴らす方法、スクリプトを使って音を鳴らし分ける方法、スクリプトを使わずに音を鳴らす方法・・・音を鳴らすだけでこんなに選択肢があるのですから、知識を得れば得るだけ、ゲーム開発は効率良くエレガントになるわけです!
次回は、【第8回】超入門!Unityで2D脱出ゲームを作ろう!「アイテムの入手編」です。
以上、最後まで読んでいただき有難うございました!