// // 玩家配置 // protected UserPreferenceProxy userPreferenceProxy; // protected virtual UserPreferenceProxy TheUserPreferenceProxy // { // get{ // if(userPreferenceProxy==null) // { // userPreferenceProxy = ApplicationFacade.RetrieveProxy (UserPreferenceProxy.defaultProxyName) as UserPreferenceProxy; // } // return userPreferenceProxy; // } // } // Use this for initialization void Awake() { SingletonMonoBehaviour <AudioController> .DestroyExtraObjects(gameObject); // 启动时 创建背景音乐的声源 if (BGMSource == null) { var bgmObj = Instantiate(PredefinedAudioObject); bgmObj.transform.parent = transform; BGMSource = bgmObj.GetComponent <TDAudioSource> (); } }
public void PlayMusic(MusicEnum music, bool loop = true) { if (!EnableSound) { return; } if (BGMSource == null) { var bgmObj = Instantiate(PredefinedAudioObject); // GameObject.DontDestroyOnLoad (bgmObj); bgmObj.transform.parent = transform; BGMSource = bgmObj.GetComponent <TDAudioSource> (); } if (BGMSource != null) { BGMSource.MusicId = music; BGMSource.Play(loop?1:0); } }
// 查找空闲的声源 // TODO: 现在声源根据播放的声音进行分组缓存,是否可以考虑不根据声音分组,而是共用一个缓存池 private TDAudioSource getFreeSoundSource(SoundEnum soundId) { if (!soundSources.ContainsKey(soundId)) { soundSources.Add(soundId, new List <TDAudioSource> ()); } List <TDAudioSource> audioSourceList = null; soundSources.TryGetValue(soundId, out audioSourceList); // 查找空闲声源 TDAudioSource audio = null; foreach (var _audio in audioSourceList) { if (!_audio.IsPlaying) { audio = _audio; break; } } if (audio == null) { // 如果没找到空闲,则添加一个新的 var audioObject = Instantiate(PredefinedAudioObject); audioObject.transform.parent = transform; audio = audioObject.GetComponent <TDAudioSource> (); audio.SoundId = soundId; audioSourceList.Add(audio); } return(audio); }