参考サイト
本題
スペースキーを押すとSEが鳴るようなスクリプトの実装。
準備
1.Create_Emptyから、空のオブジェクト「Sounds」を作成。
2.「se_01.mp3」という名前の音源ファイルを用意(mp3,wavでも良い)。そのファイルをProjectビューにドラッグアンドドロップするとインポートされる。
3.インポートした「se_01.mp3」をHierarcyビューにドラッグアンドドロップ。AudioSourceコンポーネントを持つインスタンスが作成される(Audio Clipにse_01.mp3がセットされてあることを確認する)。名前を「SE_01」とする。
4.Hierarchyビューの「SE_01」を「Sounds」にドラッグアンドドロップする。構造としては「Sounds/SE_01」となるようにする。
スクリプト
using UnityEngine; using System.Collections; public class SoundTest : MonoBehaviour { private AudioSource se; private GameObject soundObj; void Start () { soundObj = GameObject.Find("/Sounds/SE_01"); se = soundObj.GetComponent<AudioSource>(); } void Update () { if(Input.GetKeyDown(KeyCode.Space)){ se.Play(); } } }
このスクリプトをHierarchyビューの「Sounds」に貼っつける。
説明
soundObj = GameObject.Find("/Sounds/SE_01");
se = soundObj.GetComponent<AudioSource>();
Hierarchyから「Sounds/SE_01」というパスで「SE_01」オブジェクトを探し出し、そのオブジェクトを変数soundObjに代入する。
soundObjのコンポーネントAudioSourceを、変数seに代入する。AudioSourceのAudioClipにはなにか音源(mp3,wav等)をつけておくこと。
if(Input.GetKeyDown(KeyCode.Space)){
se.Play();
}
スペースキーを押すと、SE_01に設定したSE(se_01.mp3)が鳴る。
SEを重ねて鳴らしたい場合
se.Play();
の部分を、
se.PlayOneShot(se.clip);
に変更するとよい。
注意
デフォルトでは、SE_01は3D Soundに設定されているので、「Audio Listener」がSE_01に遠ければ遠いほど音が小さくなる(デフォルトでは、Main CameraにAudio Listenerが付いている)。