Unity3D播放音乐主要使用到三个类:AudioListener、AudioSource、AudioClip。
每一个场景仅能有一个AudioListener,当数量多于1是就会提示错误。如果说我们需要多个场景共享同一个背景音乐,我们可以使用单例来管理音乐。
using UnityEngine; using System.Collections; public class AudioManager : MonoBehaviour { private static AudioManager instance = null; public AudioSource audioMgr; private AudioClip ac; private string curMusicName = ""; public static AudioManager Instance { get { return instance; } } void Awake() { if (instance != null && instance != this) { Destroy(this.gameObject); } else { instance = this; } DontDestroyOnLoad(this.gameObject); } public void Play(string fileName) { if (!fileName.Equals(curMusicName)) { ac = Resources.Load("Audio/"+fileName) as AudioClip; audioMgr.clip = ac; audioMgr.Play(); curMusicName = fileName; } } public void Stop() { audioMgr.Stop(); curMusicName = ""; Debug.Log("Stop background music"); } }
当然,我们也可以使用Unity Music Manager 音乐管理插件这个插件。