今回はUnity 2DでBGMと効果音を鳴らす方法を書いてみました。 サンプルのコードを一緒に載せています。こちらのGithubからも確認可能(BgmSeScene)です。
今回作ってみたもの
今回は下記のように、シーンを構成して、BGMと効果音を鳴らすようにしてみました。
Audio Sourceを使うことで、BGMや効果音を鳴らすことができます。 BGMは常にループで流れて、効果音は下の方のディスクをクリックすると流れるようにしてみました。
BGMの準備として、魔王魂さんから素材をmp3でダウンロードさせてもらいました。
ダウンロードした音楽はAssets/Musicsというディレクトリを作成して、そこに配置しました。
<img src="https://i.gyazo.com/34b51475a7de00048761b2cdec1bb1c5.png“ alt=”Unity 2Dで音楽素材の配置” width=”600″ data-lity />
実際の処理を見ていきましょう。
BGMを鳴らす方法
BGMを鳴らす方法ですが、Main CameraにAdd ComponentからAudio Sourceを追加します。
追加した後に、このように鳴らしたいBGMをAudioSourceのAudioClipに配置します。(ドラック&ドロップで持っていきます)
気にしたおきたい項目が2つあります。 Play On Awakeの箇所にチェックが入っていれば、ゲームを開始した(シーンがロードされた)ときから流れ始めます。 Loopにチェックが入っていると、BGMが終わらないようにループ再生してくれます。
この状態でBGMの設定が完了しました。 ゲームを開始すると、AudioClipに持っていったBGMが流れるようになります。
効果音を鳴らす方法
効果音を鳴らす場合もAudio Sourceを使用します。 今回はディスクのオブジェクトに下記のようにAudio Sourceを追加しました。Audio Sourceはデフォルトの状態で大丈夫です。
また、スクリプトに対して、Audio Clipを外部から設定しています。 今回は4つの効果音を設定しました。
外部から効果音を設定したい場合はスクリプト上で、下記のようにpublicでAudioClipを定義しておく必要があります。
public class TouchDisc : MonoBehaviour
{
public AudioClip se1;
public AudioClip se2;
public AudioClip se3;
public AudioClip se4;
// --- 省略 ---
}
このように設定することで、後はスクリプトからAudio Sourceコンポーネントを使用して効果音を流すだけです。 今回はクリックしたときに効果音を鳴らします。
効果音を鳴らすテストスクリプト
今回は、下記のようにスクリプトを作成しました。 このスクリプトを先程、Audio Sourceを設定したディスクオブジェクトに設定しました。
using UnityEngine;
using UnityEngine.EventSystems;
public class TouchDisc : MonoBehaviour
{
public AudioClip se1;
public AudioClip se2;
public AudioClip se3;
public AudioClip se4;
AudioSource audioSource;
public void Start()
{
audioSource = GetComponent<AudioSource>();
}
public void OnClickDiscSe1()
{
audioSource.PlayOneShot(se1);
Debug.Log("click se1");
}
public void OnClickDiscSe2()
{
audioSource.PlayOneShot(se2);
Debug.Log("click se2");
}
public void OnClickDiscSe3()
{
audioSource.PlayOneShot(se3);
Debug.Log("click se3");
}
public void OnClickDiscSe4()
{
audioSource.PlayOneShot(se4);
Debug.Log("click se4");
}
}
解説
効果音を鳴らすところで、重要な箇所のみ解説します。
Startメソッドで、下記のようにオブジェクトに追加したAudioSourceを取得して、グローバルな変数に設定しています。
public void Start()
{
audioSource = GetComponent<AudioSource>();
}
後はクリックしたときに、作成したグローバル変数を使用して、PlayOneShotを呼ぶことで効果音を鳴らすことができます。
public void OnClickDiscSe1()
{
audioSource.PlayOneShot(se1);
}
PlayOneShotの引数には鳴らしたい効果音のAudioClipを渡します。
これで、効果音を流せるようになります。
終わりに
いかがでしたか?今回はUnity 2DでBGMと効果音を流せるように設定してみました。
まとめると…
BGMは、Audio SourceをMain Cameraに設定することで簡単に流すことができる
効果音は、スクリプトでAudio Sourceをオブジェクトから取得して、任意のタイミングでPlayOneShotメソッドを使用すると流すことができる
といった感じでした。
今回は以上になります。最後までお読みいただきありがとうございました。


コメント