Unity EasySoundMangaerを使う(1)

++導入

アセットストアにあるものはバージョンがかなり古いらしく、リファレンスにあるメソッドが実装されてなかったり、バグを含んでたり、ネームスペースすら違ったりするので(少なくとも今は)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");
		}
	}
}