IEnumerator coMission() { coDoing = true; while (m_Missions.Count > 0) { missionInfo msInfo = m_Missions[0]; m_Missions.RemoveAt(0); if (msInfo.isPlay) { if (m_CurrPackname == msInfo.packname && m_CurrClipname == msInfo.clipname) { continue;//播放的和当前是同一首 } } //当前背景音淡出 if (m_CurrBackgroundMusic != null) { CoroutineManage.Single.StartCoroutine(coFadeOutBackgroundMusic(m_CurrPackname, m_CurrBackgroundMusic, msInfo.fadeOutTime)); m_CurrBackgroundMusic = null; m_CurrPackname = ""; m_CurrClipname = ""; } //播放新的背景音 if (msInfo.isPlay) { IEnumerator it = _coPlay(msInfo.packname, msInfo.clipname, msInfo.fadeOutTime); while (it.MoveNext()) { yield return(null); } } } coDoing = false; }
//终止播放背景音 public void Stop(float fadeOutTime) { missionInfo newMission = new missionInfo(); newMission.isPlay = false; newMission.fadeOutTime = fadeOutTime; AddMission(newMission); }
void AddMission(missionInfo info) { m_Missions.Add(info); if (coDoing == false) { CoroutineManage.Single.StartCoroutine(coMission()); } }
//播放背景音乐 public void Play(string packname, string clipname, float fadeOutTime) { missionInfo newMission = new missionInfo(); newMission.isPlay = true; newMission.packname = packname; newMission.clipname = clipname; newMission.fadeOutTime = fadeOutTime; AddMission(newMission); }