Наследование: MonoBehaviour
Пример #1
0
    /// <summary>
    /// 정지
    /// </summary>
    public void Stop()
    {
        if (curAudioClip != null)
        {
            AudioClipGroup.ErasePlayingClip(curAudioClip);

            if (m_Data.m_eAudioClipGroup == E_AUDIO_CLIP_GROUP.Stop)
            {
                AudioClipGroup.Stop.OnStop(curAudioClip);
            }
            else if (m_Data.m_eAudioClipGroup == E_AUDIO_CLIP_GROUP.Bgm_Map)
            {
                AudioClipGroup.Bgm_Map.OnStop(curAudioClip);
            }
            else if (m_Data.m_eAudioClipGroup == E_AUDIO_CLIP_GROUP.Bgm_Special)
            {
                AudioClipGroup.Bgm_Special.OnStop(curAudioClip);
            }
        }

        audioSource.Stop();

        Reset();
        OnStop.Execute();
    }
Пример #2
0
    public void Init(string strSoundFileName, E_AUDIO_GROUP_TYPE eAudioGroup, E_AUDIO_CHANNEL_TYPE eAudioChannel, E_AUDIO_CLIP_GROUP eAudioClipGroup, Transform trPlace = null, bool bLocalLoad = false, E_LOOP_TYPE eLoopType = E_LOOP_TYPE.PlayOnce, string strKey = "Default", float fFadeInTime = 0.0f, float fFadeOutTime = 0.0f, float fDelay = 0.0f, float fVolume = 0.0f, float fTime = 0.0f)
    {
        m_strSoundFileName = strSoundFileName;
        m_eAudioGroup      = eAudioGroup;
        m_eAudioChannel    = eAudioChannel;
        m_bLocalLoad       = bLocalLoad;
        m_eLoopType        = eLoopType;
        m_trPlace          = trPlace;

        m_eAudioClipGroup = eAudioClipGroup;

        switch (m_eAudioClipGroup)
        {
        case E_AUDIO_CLIP_GROUP.Global:
            m_AudioClipGroup = AudioClipGroup.Global;
            break;

        case E_AUDIO_CLIP_GROUP.Map:
            m_AudioClipGroup = AudioClipGroup.Map;
            break;

        case E_AUDIO_CLIP_GROUP.Bgm_Map:
            m_AudioClipGroup = AudioClipGroup.Bgm_Map;
            break;

        case E_AUDIO_CLIP_GROUP.Bgm_Special:
            m_AudioClipGroup = AudioClipGroup.Bgm_Special;
            break;

        case E_AUDIO_CLIP_GROUP.UI:
            m_AudioClipGroup = AudioClipGroup.UI;
            break;

        default:
            m_AudioClipGroup = AudioClipGroup.Map;
            break;
        }

        m_strKey = strKey;

        if (m_trPlace == null)
        {
            m_trPlace = SoundManager.Instance.GetAudioChannelRoot(eAudioChannel);
            m_strKey  = (globalSoundKey++).ToString();
        }


        m_fFadeInTime  = fFadeInTime;
        m_bUseFadeIn   = !(m_fFadeInTime <= 0.0001f);
        m_fFadeOutTime = fFadeOutTime;
        m_bUseFadeOut  = !(m_fFadeOutTime <= 0.0001f);

        m_fDelay  = fDelay;
        m_fVolume = fVolume;
        m_fTime   = fTime;
        PublishKey();
    }
Пример #3
0
 /// <summary>
 /// 게임 초기화
 /// </summary>
 void onReset()
 {
     m_Loader.ClearSoundLoaders();
     AudioClipGroup.Global.ClearAudioClip();
     AudioClipGroup.Map.ClearAudioClip();
     AudioClipGroup.Bgm_Map.ClearAudioClip();
     AudioClipGroup.Bgm_Special.ClearAudioClip();
     AudioClipGroup.UI.ClearAudioClip();
     m_Storage.ClearAudioClip();
     AudioClipGroup.ClaerPlayingClip();
 }
Пример #4
0
    public void Stop(string name)
    {
        AudioClipGroup s = Array.Find(Sounds, sound => sound.Name == name);

        if (s == null)
        {
            Debug.LogWarning("Sound: " + name + " not found!");
            return;
        }
        _isPlaying = false;
        s.AudioSource.Stop();
    }
Пример #5
0
    public bool PopAudioClip()
    {
        AudioClip TargetClip = m_ClipList[m_ClipList.Count - 1];

        if (AudioClipGroup.IsPlayingClip(TargetClip))
        {
            return(false);
        }

        SoundManager.Instance.m_Storage.GiveupAudioClip(TargetClip);
        m_ClipList.Remove(TargetClip);

        PrintLog();
        return(true);
    }
Пример #6
0
    public override void TryPlay(SoundPlayData Data)
    {
        if (!CanPlay(Data))
        {
            return;
        }

        if (m_Channel.m_AudioObjectList.ContainsKey(Data.m_strFinalKey))
        {
            m_Channel.Stop(m_Channel.m_AudioObjectList[Data.m_strFinalKey]);
        }

        ///이미 플레이중인 같은 클립의 오디오가 있다면 새로운 오디오는 그 오디오를 가져오고 아니라면 풀에서 꺼내옵니다.
        AudioObject NewAudioObject = m_Channel.GetAudioObject();


        #region Exception
        ExceptionProcess(NewAudioObject);
        #endregion

        ///오디오 정보를 세팅합니다.
        NewAudioObject.SetAudioChannel(m_Channel);
        NewAudioObject.SetAudioGroup(NewAudioObject.m_Data.m_eAudioGroup);
        NewAudioObject.SetPlayData(Data);
        NewAudioObject.SetParent(NewAudioObject.m_Data.m_trPlace);
        NewAudioObject.SetPriority(m_Channel.m_nPriority);
        NewAudioObject.transform.localPosition = Vector3.zero;
        NewAudioObject.OnStop = null;

        m_Channel.AddAudioObject(NewAudioObject);

        //AudioObject TargetObject = m_Channel.m_AudioActiveObjectList.Count > 0 ? m_Channel.m_AudioActiveObjectList[m_Channel.m_AudioActiveObjectList.Count - 1] : null;

        NewAudioObject.Play(Data.m_LoadedAudioClip, NewAudioObject.m_Data.m_fDelay, 1, NewAudioObject.m_Data.m_bLoop, NewAudioObject.m_Data.m_fTime);

        NewAudioObject.OnStop = () =>
        {
            m_Channel.DeactiveList_Enqueue(NewAudioObject);
            m_Channel.RemoveAudioObject(NewAudioObject);
        };

        m_Channel.m_AudioActiveObjectList.Add(NewAudioObject);

        m_Channel.m_AudioFilter.RecordFilterInfo(new AudioFilterInfo(Data.m_strSoundFileName));

        AudioClipGroup.RecordPlayingClip(Data.m_LoadedAudioClip);
    }
Пример #7
0
    public void Play(string name)
    {
        AudioClipGroup s = Array.Find(Sounds, sound => sound.Name == name);

        if (s == null)
        {
            Debug.LogWarning("Sound: " + name + " not found!");
            return;
        }
        _isPlaying = true;

        s.AudioSource.Play();
        CurrentPlaying = s.Name;

        if (s.AudioSource.loop == false)
        {
            _isPlaying = false;
        }
    }
Пример #8
0
    public void Collect()
    {
        if (m_ClipList.Count > m_nCacheCount)
        {
            if (m_ClipList.Count > 0)
            {
                for (int i = m_ClipList.Count - 1; i > 0; i--)
                {
                    AudioClip TargetClip = m_ClipList[i];
                    if (!AudioClipGroup.IsPlayingClip(TargetClip))
                    {
                        SoundManager.Instance.m_Storage.GiveupAudioClip(TargetClip);
                        m_ClipList.Remove(TargetClip);
                        TargetClip = null;
                    }

                    if (m_ClipList.Count <= m_nCacheCount)
                    {
                        break;
                    }
                }
            }
        }
    }
Пример #9
0
    public override void TryPlay(SoundPlayData Data)
    {
        if (!CanPlay(Data))
        {
            return;
        }

        ///이미 플레이중인 같은 클립이 있는지 검사합니다.
        AudioObject AlreadyPlayingAudio = m_Channel.m_AudioActiveObjectList.Find(x => x.m_Data.m_strSoundFileName == Data.m_strSoundFileName);
        bool        bAlreadyPlaying     = AlreadyPlayingAudio != null;
        ///이미 플레이중인 같은 클립의 오디오가 있다면 새로운 오디오는 그 오디오를 가져오고 아니라면 풀에서 꺼내옵니다.
        AudioObject NewAudioObject = bAlreadyPlaying ? AlreadyPlayingAudio : m_Channel.GetAudioObject();

        #region Exception
        ///버그에 대한 예외처리 및 디버그 코드 작성
        ExceptionProcess(NewAudioObject);
        #endregion

        ///오디오 정보를 세팅합니다.
        NewAudioObject.SetAudioChannel(m_Channel);
        NewAudioObject.SetAudioGroup(NewAudioObject.m_Data.m_eAudioGroup);
        NewAudioObject.SetPlayData(Data);
        NewAudioObject.SetParent(NewAudioObject.m_Data.m_trPlace);
        NewAudioObject.SetPriority(m_Channel.m_nPriority);
        NewAudioObject.transform.localPosition = Vector3.zero;
        NewAudioObject.OnStop = null;

        m_Channel.AddAudioObject(NewAudioObject);

        NewAudioObject.OnStop = () =>
        {
            m_Channel.DeactiveList_Enqueue(NewAudioObject);
            m_Channel.RemoveAudioObject(NewAudioObject);
        };

        ///같은 BGM을 플레이하는경우
        if (bAlreadyPlaying && NewAudioObject.m_bFadingOut)
        {
            ///가장 최근에 플레이한 BGM으로 교체하기위해 앞에서 빼고 뒤에 넣어줌
            m_Channel.m_AudioActiveObjectList.Remove(NewAudioObject);
            m_Channel.m_AudioActiveObjectList.Add(NewAudioObject);
        }
        else if (!bAlreadyPlaying)
        {
            NewAudioObject.FadeVolume = 0;
        }

        AudioObject TargetObject = m_Channel.m_AudioActiveObjectList.Count > 0 ? m_Channel.m_AudioActiveObjectList[m_Channel.m_AudioActiveObjectList.Count - 1] : null;
        if ((bAlreadyPlaying && NewAudioObject.m_bFadingOut) || !bAlreadyPlaying)
        {
            ///가장 최근에 플레이한 오브젝트가 일시정지하려는 중이 아니면 중지시킵니다.
            if (TargetObject != null)
            {
                if (!TargetObject.IsPause)
                {
                    if (!TargetObject.m_bFadingOut)
                    {
                        TargetObject.FadeOutAndPause();
                    }
                }
            }

            ///대상 BGM을 루프로 재생합니다.
            if (!bAlreadyPlaying)
            {
                NewAudioObject.Play(Data.m_LoadedAudioClip, NewAudioObject.m_Data.m_fDelay, 1, true, NewAudioObject.m_Data.m_fTime);
            }
            if (NewAudioObject.m_Data.m_bUseFadeIn)
            {
                NewAudioObject.FadeIn();
            }
        }


        ///이미 플레이 중이지 않았다면 활성화된 리스트에 추가합니다.
        if (!bAlreadyPlaying)
        {
            m_Channel.m_AudioActiveObjectList.Add(NewAudioObject);
        }

        m_Channel.m_AudioFilter.RecordFilterInfo(new AudioFilterInfo(Data.m_strSoundFileName));
        m_Channel.PauseBGM();

        AudioClipGroup.RecordPlayingClip(Data.m_LoadedAudioClip);
    }
Пример #10
0
 public void SetAudioClipGroup(AudioClipGroup AudioClipGroup)
 {
     m_AudioClipGroup = AudioClipGroup;
 }
Пример #11
0
 private void OnSelectWeapon(WeaponUpgradeData data)
 {
     currentWeaponData = data;
     _nextShot         = Time.time;
     _sound            = data.sound;
 }