コード例 #1
0
    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));
        }
    }
コード例 #2
0
    /// <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));
        }
    }