//------------------------------------------------------------------------ /*! * @brief 再生済みチェック */ //------------------------------------------------------------------------ private bool IsPlayingSound(BGMPlayData data) { // 全てのオーディオソースを検索して再生中でないかを確認 BGMAudioSource src = null; for (int i = 0; i < m_BGMAudioSource.Length; i++) { src = m_BGMAudioSource[i]; if (src == null) { continue; } if (src.playState == BGMPlayState.BGM_STATE_NONE) { continue; } // 指定のサウンドを既に再生していないかチェック if (src.ChkPlayingSound(data) == false) { continue; } // 同じサウンドでもフェードアウト中なら再生していないことにする if (src.playState == BGMPlayState.BGM_STATE_FADEOUT) { return(false); } return(true); } return(false); }
/// <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()); }
public static bool PlaySound(string se_name, bool se_flag = true) { if (ResourcesLoader.ContainsKey(se_name) == false) { return(false); } if (se_flag) { if (SoundPlayerObj == null) { SoundPlayerObj = new GameObject("SoundPlayer"); SoundAudioSource = SoundPlayerObj.AddComponent <AudioSource>(); } SoundAudioSource.PlayOneShot(ResourcesLoader.GetObjectHandle(se_name)); } else { if (BGMPlayerObj == null) { BGMPlayerObj = new GameObject("BGMPlayer"); BGMAudioSource = BGMPlayerObj.AddComponent <AudioSource>(); BGMAudioSource.clip = ResourcesLoader.GetObjectHandle(se_name); BGMAudioSource.volume = 1.0f; BGMAudioSource.loop = true; BGMAudioSource.Play(); } else { if (BGMAudioSource) { if (BGMAudioSource.isPlaying) { BGMAudioSource.Stop(); } else { BGMAudioSource.Play(); } } else { BGMAudioSource = BGMPlayerObj.AddComponent <AudioSource>(); if (BGMAudioSource) { BGMAudioSource.clip = ResourcesLoader.GetObjectHandle(se_name); BGMAudioSource.volume = 1.0f; BGMAudioSource.loop = true; BGMAudioSource.Play(); } } } } return(true); }
//------------------------------------------------------------------------ /*! * @brief BGM停止 * @param[in] bool (fade) フェード * @param[in] float (sec) 時間(秒) */ //------------------------------------------------------------------------ public void StopBGM(bool fade, float sec) { // 再生中の全てのオーディオソースに対し、停止命令を出す 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; } // 停止 audio.Stop(sec); } }
/// <summary> /// ミュート設定 /// </summary> /// <param name="is_mute"></param> private void Mute(bool is_mute) { BGMAudioSource audio = null; for (int i = 0; i < m_BGMAudioSource.Length; i++) { audio = m_BGMAudioSource[i]; if (audio == null) { continue; } if (audio.isMute != is_mute) { // ミュート設定 audio.Mute(is_mute); } } }
public static IEnumerator SetFadeTimer(float start_val, float end_val, float end_time) { FadeTimer = new CFadeTimer(start_val, end_val, end_time); while (true) { float t = FadeTimer.CalcTime(); BGMAudioSource.volume = t; if (t <= 0.0f) { BGMAudioSource.Stop(); yield break; } else { yield return(new WaitForSeconds(Time.deltaTime)); } } }
//------------------------------------------------------------------------ /*! * @brief 開始処理 */ //------------------------------------------------------------------------ protected override void Awake() { base.Awake(); //-------------------------------------------------------------------- // データ領域作成 //-------------------------------------------------------------------- for (int i = 0; i < m_BGMPlayData.Length; i++) { m_BGMPlayData[i] = new BGMPlayData(); } //-------------------------------------------------------------------- // 再生管理クラス生成 //-------------------------------------------------------------------- for (int i = 0; i < m_BGMAudioSource.Length; i++) { m_BGMAudioSource[i] = new BGMAudioSource(); m_BGMAudioSource[i].Setup(m_AudioSource[i]); } }
//------------------------------------------------------------------------ /*! * @brief 定期更新処理 */ //------------------------------------------------------------------------ void Update() { if (!LocalSaveManager.HasInstance) { return; } //-------------------------------------------------------------------- // Mute設定 //-------------------------------------------------------------------- if (mIsMute == false) { LocalSaveOption cOption = LocalSaveManager.Instance.LoadFuncOption(); if (cOption != null) { bool bOptionActiveBGM = (cOption.m_OptionBGM == (int)LocalSaveDefine.OptionBGM.OFF); Mute(bOptionActiveBGM); } } else { Mute(true); } //-------------------------------------------------------------------- // 再生リクエスト処理 //-------------------------------------------------------------------- BGMPlayData data = null; for (int i = 0; i < m_BGMPlayData.Length; i++) { data = m_BGMPlayData[i]; if (data == null) { continue; } if (data.dataUsing == false) { continue; } // 再生クラスの空きを検索 BGMAudioSource audio = null; for (int j = 0; j < m_BGMAudioSource.Length; j++) { audio = m_BGMAudioSource[j]; if (audio == null) { continue; } if (audio.playState != BGMPlayState.BGM_STATE_NONE) { continue; } // 再生 audio.Play(data); data.Clear(); break; } } //-------------------------------------------------------------------- // ダッキング処理 //-------------------------------------------------------------------- if (mDuckingTime != 0.0f && mDuckingTime > AudioSettings.dspTime) { if (mDuckingEnable == false) { StartCoroutine(TransVolume(1.0f, 0.5f, 0.05f, true)); } } else { if (mDuckingEnable == true) { StartCoroutine(TransVolume(0.5f, 1.0f, 0.6f, false)); } } //-------------------------------------------------------------------- // 再生管理クラス更新 //-------------------------------------------------------------------- for (int i = 0; i < m_BGMAudioSource.Length; i++) { BGMAudioSource audio = m_BGMAudioSource[i]; if (audio == null) { continue; } if (audio.playState != BGMPlayState.BGM_STATE_READY && audio.playState != BGMPlayState.BGM_STATE_PLAYING && audio.playState != BGMPlayState.BGM_STATE_FADEIN && audio.playState != BGMPlayState.BGM_STATE_FADEOUT) { continue; } // 再生情報更新 audio.Update(); // ダッキング処理 audio.duckingScale = mDuckingVolumeScale; } }