/// <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(); }
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(); }
/// <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(); }
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(); }
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); }
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); }
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; } }
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; } } } } }
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); }
public void SetAudioClipGroup(AudioClipGroup AudioClipGroup) { m_AudioClipGroup = AudioClipGroup; }
private void OnSelectWeapon(WeaponUpgradeData data) { currentWeaponData = data; _nextShot = Time.time; _sound = data.sound; }