環境
Unity 2019.3.7f1
はじめに
サウンドを再生したことはあるけど、
再生方法がいくつかあって、いまいち手順がまとまっていないためメモ
サウンドの基本
音を鳴らすには次の3つが必要です。
・AudioClip
CDみたいなもの 自分でファイルを用意する。
再生できる形式はaif、wav、mp3、oggです。
・AudioSource
CDプレイヤーみたいなもの このコンポーネントをオブジェクトに付ける必要有り。
・AudioListener
スピーカーみたいなもの MainCameraにこのコンポーネントが勝手についている。
一つのシーンに2つ以上つけると警告がでる。
音の再生方法
音の再生方法は大きく分けて次の2種類
・AudioSourceにAudioClipを紐づけして再生
・スクリプトから再生
-Playメソッド
BGM再生(重ねて再生×)
-PlayOneShotメソッド
SE再生(重ねて再生〇)
-UnPauseメソッド
一時停止を解除
音の停止方法
スクリプトから停止
-Stopメソッド
CDプレイヤーでいう■ボタン 再度再生すると最初からの再生になる。
-Pauseメソッド
一時停止する
具体例
音の再生方法
・AudioSourceにAudioClipを紐づけして再生
AudioSourceコンポーネントを適当なオブジェクトに付けて
・オーディオクリップに音楽ファイルをアタッチ
・ゲーム開始時に再生にチェック
を行い実行することで再生できます。
・スクリプトから再生
Playメソッド、PlayOneShotメソッドを使用するために
以下の前準備を行います。
前準備
・空のゲームオブジェクトを作成
・新規スクリプトを作成
・作成した空のオブジェクトに次の2つを割り当て
AudioSourceコンポーネント
作成した新規スクリプト
・AudioSourceコンポーネント設定
「ゲーム開始時に再生」のチェックを外しておく
Playメソッド
主な用途はBGM再生です。
複数の音を重ねて再生できません。
では、Playメソッドを使って音を再生してみます。
まず、スクリプトをこのように書きます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class test4 : MonoBehaviour { [SerializeField] private AudioSource a;//AudioSource型の変数aを宣言 void Start() { a.Play();//AudioSource型が入っている変数aを再生 } }
[SerializeField]についての説明はこちら↓
marumaro7.hatenablog.com
次にインスペクター画面で
・AudioSourceを変数aにアタッチ
・再生したい音楽ファイル (AudioClip) 割り当て
実行すると音が再生されます。
PlayOneShotメソッド
こちらは複数の音を重ねて再生できますが、ちょっと手間が増えます。
スクリプトはこちらにします。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class test4 : MonoBehaviour { [SerializeField] private AudioSource a;//AudioSource型の変数aを宣言 [SerializeField] private AudioClip b;//AudioClip型の変数bを宣言 void Start() { a.PlayOneShot(b);//AudioClip型の変数bを引数として、AudioSource型が入っている変数aを再生 } }
変数aにAudioSourceをアタッチ
変数bに再生したいAudioClipをアタッチします。
実行することで音が再生されます。
UnPauseメソッド
一時停止を解除する
Pauseメソッドの具体例の項目で一緒に説明します。
音の停止方法
スクリプトから停止
音の停止、一時停止はPlayメソッドや「ゲーム開始時に再生」にて音が再生されている状態で使います。
Stopメソッド
ボタンに自作の関数を割り当てて使うコードです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class test4 : MonoBehaviour { [SerializeField] private AudioSource a;//AudioSource型の変数aを宣言 再生するAudioSourceをアタッチ必要 void Start() { } //ボタンに割り当てる自作の関数 public void PushButton() { a.Stop();//AudioSource型が入っている変数aを停止 } }
新規でボタンを作成し、Buttonコンポーネントでこのように関数を割り当てることで使います。
再生している状態でボタンを押せば音が停止します。
Pauseメソッド
PauseメソッドとUnPauseメソッドのボタンを作り
一時停止・一時停止解除ができるようにします。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class test4 : MonoBehaviour { [SerializeField] private AudioSource a;//AudioSource型の変数aを宣言 再生するAudioSourceをアタッチ必要 void Start() { } //ボタン1つ目に割り当てる自作の関数 public void PushButtonPause() { a.Pause();//AudioSource型が入っている変数aを一時停止 } //ボタン2つ目に割り当てる自作の関数 public void PushButtonUnPause() { a.UnPause();//AudioSource型が入っている変数aを一時停止解除 } }
2つのボタンに自作の関数をそれぞれ割り当てることで
一時停止と一時停止解除を行うことができます。