private void PlayAfterLoad(AudioClip clip) { if (null != clip) { //必须保证音效ID唯一 string soundId = clip.name; if (!clipDictionary.ContainsKey(soundId)) { clipDictionary.Add(soundId, clip); } //获得可以播放的player SoundPlayer player = GetUnusedPlayer(); if (null == player) { player = new SoundPlayer(clip); soundList.Add(player); } else { player.Clip = clip; } AudioSetting audioSetting = clipSettingDictionary[soundId]; audioSetting.IsLoading = false; player.Loop = audioSetting.Loop; player.Volumn = audioSetting.Volumn; player.Delay = audioSetting.Delay; player.Mute = mute; player.Play(); } }
/// 音频播放控制,支持多文件同时播放 /// audioFileName不能带后缀 private void PlayClip(string soundId, string assetBundleName, bool loop, float volumn, float delay = 0f) { try { if (StringUtils.isEmpty(soundId)) { return; } AudioSetting audioSetting = new AudioSetting(); audioSetting.Loop = loop; audioSetting.Volumn = volumn; audioSetting.Delay = delay; audioSetting.IsLoading = true; clipSettingDictionary[soundId] = audioSetting; //将音频文件转换为AudioClip if (!clipDictionary.ContainsKey(soundId)) { AssetManager.Instance.LoadAsset <AudioClip>(assetBundleName, PlayAfterLoad, soundId); } else { PlayAfterLoad(clipDictionary[soundId]); } } catch (Exception e) { Log.warin(this, e.StackTrace); } }