Unityでサウンド再生するスクリプトとして、Play()とPlayOneShot()があります。
Playは再生時に音の重複ができず、PlayOneShotは重複が可能です。
連射のショット音などは、どうしても音が重複するので、PlayOneShotが適しています。
一方、BGMのようにサウンドを最後まで鳴らす際には、Playが向いています。
2つの再生方法について、スクリプトを書いてみましょう。
サウンドデータの準備
音楽ファイルを、インポートします。
プロジェクトビューの中で右クリックして、新しいアセットをインポート。
今回はLaserBeamというmp3ファイルを用意しました。
空のオブジェクトを作成します。
GameObject(空のオブジェクト)に、AudioSourceコンポーネントを追加します。
オーディオクリップに音のファイルを入れ、ゲーム開始時に再生のチェックを外します。
SoundManage.csを作成し、GameObjectに追加します。
Play()のスクリプト
SoundManage.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SoudManage : MonoBehaviour { AudioSource audioSource; void Start() { audioSource = GetComponent<AudioSource>(); } void Update() { if(Input.GetMouseButtonDown(0)) { audioSource.Play(); } } } |
プレイして音を確認します。
左クリックで連打してみると、音が重ならず、頭出しで再生されています。
Play()は、BGMのようにサウンドをループ再生したい場合などに適しています。
PlayOneShot()のスクリプト
続いて、PlayOneShot()を試してみます。
SoundManage.csを開いて追記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SoudManage : MonoBehaviour { AudioSource audioSource; void Start() { audioSource = GetComponent<AudioSource>(); } void Update() { if(Input.GetMouseButtonDown(0)) { audioSource.PlayOneShot(audioSource.clip); } } } |
左クリックを連打してみると、一曲すべて終了するまで、音が重複して鳴っていることがわかります。
また、PlayOneShot()は、オーディオクリップを指定する必要があります。
PlayOneShot()は、効果音などの短いサウンドを再生する場面に適しています。