++導入
アセットストアにあるものはバージョンがかなり古いらしく、リファレンスにあるメソッドが実装されてなかったり、バグを含んでたり、ネームスペースすら違ったりするので(少なくとも今は)githubからDLしてAssets以下に配置する
https://github.com/JackM36/Eazy-Sound-Manager
++基本的な使い方
EasySoundMangerはAudioにIDを割り振って管理する。
このIDを指定して音を鳴らしたり停止したりできる。
audioのidはPlayMusic,PrepareMusicなどのメソッドで発行される。
++サンプルコード
MusicManagerで全ての音源を管理し、MusicManagerスクリプトを別のオブジェクトに関連付けられたBlueGemスクリプトから操作している。
Playerタグを持つオブジェクトの衝突判定を受けたら、wbgmを停止して、goalを流している。
using System.Collections; using System.Collections.Generic; using UnityEngine; using Hellmade.Sound; public class MusicManager : MonoBehaviour { public AudioClip wbgm; public AudioClip goal; private Dictionary<string,int> ids = new Dictionary<string,int>(); void Start(){ ids["wbgm"] = EazySoundManager.PrepareMusic(wbgm, 1.0f, true,false); ids["goal"] = EazySoundManager.PrepareMusic(goal, 0.8f, true,false); this.Play("wbgm"); } public void Play(string name){ EazySoundManager.GetAudio(ids[name]).Play(); } public void Stop(string name){ EazySoundManager.GetAudio(ids[name]).Stop(); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BlueGem : MonoBehaviour { // Use this for initialization private MusicManager mm; void Start () { mm = GameObject.Find("MusicManager").GetComponent<MusicManager>(); } void OnTriggerEnter(Collider hit){ if (hit.CompareTag("Player")){ mm.Stop("wbgm"); mm.Play("goal"); } } }