/// <summary> /// 再生中のデータを取得 /// </summary> /// <returns></returns> public BGMPlayData[] GetPlayingBGM() { List <BGMPlayData> playDatas = new List <BGMPlayData>(); BGMAudioSource audio = null; for (int i = 0; i < m_BGMAudioSource.Length; ++i) { audio = m_BGMAudioSource[i]; if (audio.playState != BGMPlayState.BGM_STATE_PLAYING && audio.playState != BGMPlayState.BGM_STATE_FADEIN) { continue; } if (audio.playData != null) { BGMPlayData playData = new BGMPlayData(); playData.Setup(audio.playData); playDatas.Add(playData); } } return(playDatas.ToArray()); }
//------------------------------------------------------------------------ /*! * @brief BGM再生 */ //------------------------------------------------------------------------ public void PlayBGM(AudioClip clip, float volume, double delayTime, float fadeTime, bool loop) { // 再生リクエスト保存領域検索 BGMPlayData blankData = GetBlankPlayData(); if (blankData == null) { return; } // 再生リクエストセットアップ blankData.Setup(clip, volume, delayTime, fadeTime, loop); // 既に再生しているものは受け付けない if (IsPlayingSound(blankData) == true) { blankData.Clear(); } }
//------------------------------------------------------------------------ // @brief 再生 //------------------------------------------------------------------------ public void Play(BGMPlayData data) { //-------------------------------------------------------------------- // エラーチェック //-------------------------------------------------------------------- if (data == null) { return; } #if BUILD_TYPE_DEBUG Debug.Log("CALL BGMManager#Play:" + data.dataBGMPath); #endif if (data.dataBGMPath.IsNullOrEmpty()) { Debug.Log("bgmPath is null or empty"); return; } // AssetBundle読み込み終了時にactionを呼ばれるとdataの中身が保障されないので一旦ローカルに保存 BGMPlayData _data = new BGMPlayData(); _data.Setup(data); Action <AudioClip> action = (clip) => { //-------------------------------------------------------------------- // 再生設定 //-------------------------------------------------------------------- m_PlayData.Setup(_data); //-------------------------------------------------------------------- // オーディオクリップセット //-------------------------------------------------------------------- m_AudioClip = clip; //-------------------------------------------------------------------- // ステータス設定 //-------------------------------------------------------------------- m_PlayState.m_playTime = 0.0f; m_PlayState.m_playVolume = 0.0f; m_PlayState.m_playState = BGMPlayState.BGM_STATE_READY; }; if (data.dataAudioClip != null) { action(data.dataAudioClip); return; } if (data.dataBGMPath == BGMManager.RESOURCE_BGM_01_1) { string res_path = GlobalDefine.DATAPATH_SOUND_BGM + data.dataBGMPath; AudioClip clip = Resources.Load(res_path) as AudioClip; action(clip); return; } string path = data.dataBGMPath; if (path.StartsWith(BGMManager.ASSETBUNELE_BATTLE_PREFIX)) { string asset_bundle_name = "pack_" + path.Substring(0, (BGMManager.ASSETBUNELE_BATTLE_PREFIX + "0000").Length); AssetBundler.Create().SetAsAudioClip(asset_bundle_name, path, (clip) => { if (clip == null) { Debug.LogError("NOT_FOUND_AUDIOCLIP:" + path); return; } action(clip); } ).Load(); } else { AssetBundler.Create().SetAsAudioClip(BGMManager.ASSETBUNELE_MENU, path, (clip) => { if (clip == null) { Debug.LogError("NOT_FOUND_AUDIOCLIP:" + path); return; } action(clip); }).Load(); } }