public void PlayBGM(SoundDataSO.BgmType newBgmType, bool loopFlg = true) { SoundDataSO.BgmData newBgmData = null; foreach (SoundDataSO.BgmData bgmData in soundDataSO.bgmDataList.Where(x => x.bgmType == newBgmType)) { newBgmData = bgmData; break; } if (newBgmData == null) { return; } if (bgmSources[0].clip != null && bgmSources[0].clip == newBgmData.bgmAudioClip) { return; } else if (bgmSources[1].clip != null && bgmSources[1].clip == newBgmData.bgmAudioClip) { return; } if (bgmSources[0].clip == null && bgmSources[1].clip == null) { bgmSources[0].loop = loopFlg; bgmSources[0].clip = newBgmData.bgmAudioClip; bgmSources[0].volume = newBgmData.volume; bgmSources[0].Play(); } else { StartCoroutine(CrossFadeChangeBGM(newBgmData, loopFlg)); } }
/// <summary> /// BGM再生 /// </summary> /// <param name="newBgmType"></param> /// <param name="loopFlg"></param> public void PlayBGM(SoundDataSO.BgmType newBgmType, bool loopFlg = true) { //BGMをSilenceの状態にする場合 if ((int)newBgmType == 999) { StopBGM(); return; } //再生するBGM用のBgmDataを取得 SoundDataSO.BgmData newBgmData = null; foreach (SoundDataSO.BgmData bgmData in soundDataSO.bgmDataList.Where(x => x.bgmType == newBgmType)) { newBgmData = bgmData; break; } //対象となるデータがなければ処理しない if (newBgmData == null) { return; } //同じBGMの場合は処理しない if (bgmSource[0].clip != null && bgmSource[0].clip == newBgmData.bgmAudioClip) { return; } else if (bgmSource[1].clip != null && bgmSource[1].clip == newBgmData.bgmAudioClip) { return; } //フェードでBGM開始 if (bgmSource[0].clip == null && bgmSource[1].clip == null) { bgmSource[0].loop = loopFlg; bgmSource[0].clip = newBgmData.bgmAudioClip; bgmSource[0].volume = newBgmData.volume; bgmSource[0].Play(); } else { //クロスフェード処理を利用してBGMを切り替え StartCoroutine(CrossFadeChangeBGM(newBgmData, loopFlg)); } }