コード例 #1
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    /// <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());
    }
コード例 #2
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    //------------------------------------------------------------------------

    /*!
     *          @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);
    }
コード例 #3
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    //------------------------------------------------------------------------

    /*!
     *          @brief		空き再生データ取得
     *          @return		PlayData		[未使用領域]
     */
    //------------------------------------------------------------------------
    private BGMPlayData GetBlankPlayData()
    {
        BGMPlayData blankData = null;

        // 未使用再生データを検索
        BGMPlayData data = null;

        for (int i = 0; i < m_BGMPlayData.Length; i++)
        {
            data = m_BGMPlayData[i];
            if (data == null)
            {
                continue;
            }

            // 使用中かどうかチェック
            if (data.dataUsing == true)
            {
                continue;
            }

            blankData = data;
            break;
        }

        // 未使用データ領域を返す
        return(blankData);
    }
コード例 #4
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    //------------------------------------------------------------------------
    //	@brief		指定のオーディオリソースが再生中か
    //	@retval		bool		[再生中/異なるオーディオリソース]
    //------------------------------------------------------------------------
    public bool ChkPlayingSound(BGMPlayData data)
    {
        if (m_PlayData.dataBGMPath != data.dataBGMPath)
        {
            return(false);
        }

        return(true);
    }
コード例 #5
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    //------------------------------------------------------------------------
    //	@brief		セットアップ
    //	@param[in]	BGMPlayData		(data)			再生設定
    //------------------------------------------------------------------------
    public void Setup(BGMPlayData data)
    {
        if (data == null)
        {
            return;
        }

        m_dataLoop       = data.m_dataLoop;
        m_dataUsing      = true;
        m_dataBGMPath    = data.m_dataBGMPath;
        m_dataPlayVolume = data.m_dataPlayVolume;
        m_dataDelayTime  = data.m_dataDelayTime;
        m_dataFadeTime   = data.m_dataFadeTime;
        m_dataFadeSpeed  = data.m_dataFadeSpeed;
        m_dataAudioClip  = data.m_dataAudioClip;
    }
コード例 #6
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    //------------------------------------------------------------------------

    /*!
     *          @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();
        }
    }
コード例 #7
0
ファイル: SoundUtil.cs プロジェクト: mliuzailin/GitGame
 static public void PlayBGM(BGMPlayData playData)
 {
     if (playData != null || BGMManager.HasInstance)
     {
         if (playData.dataAudioClip == null)
         {
             BGMManager.Instance.PlayBGM(playData.dataBGMPath,
                                         playData.dataPlayVolume,
                                         playData.dataDelayTime,
                                         playData.dataFadeTime,
                                         playData.dataLoop);
         }
         else
         {
             BGMManager.Instance.PlayBGM(playData.dataAudioClip,
                                         playData.dataPlayVolume,
                                         playData.dataDelayTime,
                                         playData.dataFadeTime,
                                         playData.dataLoop);
         }
     }
 }
コード例 #8
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    //------------------------------------------------------------------------

    /*!
     *          @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]);
        }
    }
コード例 #9
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    //------------------------------------------------------------------------
    //	@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();
        }
    }
コード例 #10
0
ファイル: BGMManager.cs プロジェクト: mliuzailin/GitGame
    //------------------------------------------------------------------------

    /*!
     *          @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;
        }
    }