SEの音源と音量を一括管理する簡易版AudioManager [Unity]
SEの音源(AudioClip)と音量(Volume)を一括管理する簡易版AudioManagerのアウトプットです.
せっかくSingletonをIOしたので,Unityでアウトプットしました.
xrdnk.hateblo.jp
Soundクラス
using UnityEngine; [System.Serializable] public class Sound { [Tooltip("サウンドの名前")] public string name; // AudioSourceに必要な情報 [Tooltip("サウンドの音源")] public AudioClip clip; [Tooltip("サウンドボリューム, 0.0から1.0まで")] public float volume; // AudioSource.Inspectorに表示しない [HideInInspector] public AudioSource audioSource; }
AudioManager.cs
using UnityEngine; using System; public class AudioManager : MonoBehaviour { // Soundクラス配列 [SerializeField] private Sound[] sounds; // シングルトン化 public static AudioManager instance; private void Awake() { // AudioManagerインスタンスが存在しなければ生成 // 存在すればDestroy,return if (instance == null) { instance = this; } else { Destroy(gameObject); return; } DontDestroyOnLoad(gameObject); // Soundクラスに入れたデータをAudioSourceに当てはめる foreach (Sound s in sounds) { s.audioSource = gameObject.AddComponent<AudioSource>(); s.audioSource.clip = s.clip; s.audioSource.volume = s.volume; } } public void Play(string name) { // ラムダ式 第二引数はPredicate // Soundクラスの配列の中の名前に, // 引数nameに等しいものがあるかどうか確認 Sound s = Array.Find(sounds, sound => sound.name == name); // なければreturn if (s == null) { print("Sound" + name + "was not found"); return; } // あればPlay() s.audioSource.Play(); } }
空オブジェクト(AudioManagerにRenameする)にAudioManager.csを貼り付けて終わり.
追加したいSE分だけSizeを増やします.例として以下の画像みたいな感じになります.
SEを追加したいメソッドに以下のコード追加するだけで完了.
AudioManager.instance("[name]");
参考記事
以下にもっとつよつよなAudioManagerがあります.
特にkan_kikuchi様のAudioManagerはすごい….是非個人開発に使わせて頂きます.
今までSEを追加するたびにスクリプトに毎回AudioClip入れていたのを卒業です.
qiita.com
kan-kikuchi.hatenablog.com