とりあえず一日~二日で作ったプロトタイプに音を付けたい時に使うスクリプト。
//-------------------------------------------------------------------------------- // - AudioManager - //-------------------------------------------------------------------------------- // // オーディオ全般 // //-------------------------------------------------------------------------------- using UnityEngine; using System.Collections; using System.Collections.Generic; public enum ESeID { None, Decide, Cancel, Select, Bomb, Dash, Max } //-------------------------------------------------------------------------------- public class AudioManager : MonoBehaviour { AudioSource mBGM = null; AudioSource [] mSEList = new AudioSource[cSEMax]; const int cSEMax = (int)ESeID.Max; //---------------------------------------------------------------------------- void Awake () { DontDestroyOnLoad( gameObject ); var t = transform; mBGM = GetComponentSafe<AudioSource>( t, "BGM" ); for( ESeID e = ESeID.None+1; e < ESeID.Max; e++ ) { mSEList[(int)e] = GetComponentSafe<AudioSource>( t, e.ToString() ); } } //---------------------------------------------------------------------------- public void playSE ( ESeID id ) { if ( mSEList[(int)id] != null ) mSEList[(int)id].Play(); } //---------------------------------------------------------------------------- public void startBGM() { if ( !mBGM.isPlaying ) mBGM.Play(); } //---------------------------------------------------------------------------- // コンポーネントの取得 private Type GetComponentSafe<Type>( Transform parent, string gameobject_name ) where Type : Component { Transform temp = parent.Find( gameobject_name ); if ( !temp ) return null; return temp.GetComponent< Type >(); } }
使い方:
- "Audio"と名前の付けた空のゲームオブジェクト*1に、"BGM"と名前の付けたゲームオブジェクトと、 ESeID の中で指定した SE の名前のゲームオブジェクトをぶら下げる("Decide"とか"Dash"とか)。BGM と SE にはそれぞれ AudioSource を追加しておく。
- "Audio" にこの AudioManager を追加する。
- 後は適当なところから playSE や startBGM を呼ぶ。
*1:この名前は別になんでもいい