Exemple #1
0
    //------------------------------------------------------------------------

    /*!
     *          @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();
        }
    }
Exemple #2
0
    //------------------------------------------------------------------------
    //	@brief		定期更新
    //------------------------------------------------------------------------
    public void Update()
    {
        //--------------------------------------------------------------------
        //	エラーチェック
        //--------------------------------------------------------------------
        if (m_AudioClip == null ||
            m_PlayState == null ||
            m_PlayData == null)
        {
            return;
        }


        //--------------------------------------------------------------------
        // 再生時間更新
        //--------------------------------------------------------------------
        m_PlayState.m_playTime += Time.deltaTime;


        //--------------------------------------------------------------------
        // 各ステータスでの状態処理
        //--------------------------------------------------------------------
        switch (m_PlayState.m_playState)
        {
        case BGMPlayState.BGM_STATE_READY:
            //----------------------------------------------------------------
            //	再生待ち時間チェック
            //----------------------------------------------------------------
        {
            m_AudioSource.clip = m_AudioClip;
            m_AudioSource.loop = m_PlayData.dataLoop;

            m_AudioSource.PlayScheduled(m_PlayData.dataDelayTime);

            m_PlayState.m_playState = BGMPlayState.BGM_STATE_FADEIN;
        }
        break;


        case BGMPlayState.BGM_STATE_PLAYING:
            //----------------------------------------------------------------
            //	再生中
            //----------------------------------------------------------------
            break;


        case BGMPlayState.BGM_STATE_FADEIN:
            //----------------------------------------------------------------
            //	フェードイン
            //----------------------------------------------------------------
        {
            float fadeSpeed = 0.0f;
            if (m_PlayData.dataFadeTime <= 0.0f)
            {
                fadeSpeed = m_PlayData.dataPlayVolume;
            }
            else
            {
                fadeSpeed = m_PlayData.dataFadeSpeed * Time.deltaTime;
            }

            m_PlayState.m_playVolume += fadeSpeed;
            if (m_PlayState.m_playVolume >= m_PlayData.dataPlayVolume)
            {
                m_PlayState.m_playVolume = m_PlayData.dataPlayVolume;
                m_PlayState.m_playState  = BGMPlayState.BGM_STATE_PLAYING;
            }
        }
        break;


        case BGMPlayState.BGM_STATE_FADEOUT:
            //----------------------------------------------------------------
            //	フェードアウト
            //----------------------------------------------------------------
        {
            float fadeSpeed;
            // フェードアウト時間が0だった場合はボリュームが0になるようにする
            if (m_PlayState.m_stopFadeTime <= 0.0f)
            {
                fadeSpeed = m_PlayState.m_playVolume;
            }
            else
            {
                fadeSpeed = m_PlayState.m_stopFadeSpeed * Time.deltaTime;
            }

            m_PlayState.m_playVolume -= fadeSpeed;
            if (m_PlayState.m_playVolume <= 0.0f)
            {
                // ステータス停止
                m_PlayState.m_playState  = BGMPlayState.BGM_STATE_NONE;
                m_PlayState.m_playVolume = 0.0f;

                // 停止
                m_AudioSource.Stop();
                m_PlayData.Clear();

                m_AudioSource.clip = null;
                m_AudioClip        = null;
            }
        }
        break;


        case BGMPlayState.BGM_STATE_NONE:
        default:
            //----------------------------------------------------------------
            //	無し
            //----------------------------------------------------------------
            break;
        }


        //--------------------------------------------------------------------
        // ボリューム設定
        //--------------------------------------------------------------------
        if (m_AudioSource.volume != (m_PlayState.m_playVolume * m_DuckingScale))
        {
            m_AudioSource.volume = (m_PlayState.m_playVolume * m_DuckingScale);
        }
    }
Exemple #3
0
    //------------------------------------------------------------------------

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