AudioClip GetOrAddAudioClip(string path, Define.Sound type = Define.Sound.Effect) { if (path.Contains("Sounds/") == false) { path = $"Sounds/{path}"; } AudioClip audioClip = null; if (type == Define.Sound.Bgm) { audioClip = Managers.Resource.Load <AudioClip>(path); } else { if (m_audioClips.TryGetValue(path, out audioClip) == false) { audioClip = Managers.Resource.Load <AudioClip>(path); m_audioClips.Add(path, audioClip); } } if (audioClip == null) { Debug.Log($"AudioClip Missing ! {path}"); } return(audioClip); }
//매개변수(audioClip, BGM인지 Effect인지, 볼륨, 속도) public void Play(AudioClip audioClip, Define.Sound type = Define.Sound.Effect, float volume = 1.0f, float pitch = 1.0f) { if (audioClip == null) { return; } //True -> 실행시켜주는 오디오가 BGM일때 if (type == Define.Sound.Bgm) { AudioSource audioSource = _audioSources[(int)Define.Sound.Bgm]; //다른 Bgm이 플레이 되고 있으면(사실 없어도 되지만 혹시 모르니 안전한 코드로 작성) if (audioSource.isPlaying) { audioSource.Stop(); //기존에 있는것을 멈춰주고 } audioSource.volume = volume; audioSource.pitch = pitch; audioSource.clip = audioClip; //새로운 클립을 넣어준 후 audioSource.Play(); //실행해준다. } //실행시켜주는 오디오가 Effect일때 else { AudioSource audioSource = _audioSources[(int)Define.Sound.Effect]; audioSource.volume = volume; audioSource.pitch = pitch; audioSource.PlayOneShot(audioClip); } }
public void Play(AudioClip audioClip, Define.Sound type = Define.Sound.Effect, float pitch = 1.0f) { if (audioClip == null) { return; } if (type == Define.Sound.Bgm) { AudioSource audioSource = m_audioSources[(int)Define.Sound.Bgm]; if (audioSource.isPlaying) { audioSource.Stop(); } audioSource.pitch = pitch; audioSource.clip = audioClip; audioSource.Play(); } else { AudioSource audioSource = m_audioSources[(int)Define.Sound.Effect]; audioSource.pitch = pitch; audioSource.PlayOneShot(audioClip); } }
private AudioClip GetOrAddAudioClip(string path, Define.Sound type = Define.Sound.Effect) { if (path.Contains("Sounds/") == false) { path = $"Sounds/{path}"; } AudioClip clip = null; if (type == Define.Sound.Bgm) { clip = Managers.Resource.Load <AudioClip>(path); } else { if (_audioClips.TryGetValue(path, out clip) == false) { clip = Managers.Resource.Load <AudioClip>(path); _audioClips.Add(path, clip); } } if (clip == null) { Debug.LogError($"AudioClip is Missing ! {path}"); } return(clip); }
//최초 사용되는 효과음은 캐싱되며 //두번 이상 사용되는 효과음일 경우 캐싱이 되어있는것을 가져와 빠른 접근을 해주는 함수입니다. AudioClip GetOrAddAudioClip(string path, Define.Sound type = Define.Sound.Effect) { if (path.Contains("Sounds/") == false) { path = $"Sounds/{path}"; } AudioClip audioClip = null; if (type == Define.Sound.Bgm) { audioClip = Managers.Resource.Load <AudioClip>(path); } else { //소리의 빠른 접근을 위해 _audioClip 딕셔너리에 있는지 확인해줍니다. if (_audioClips.TryGetValue(path, out audioClip) == false) { //딕셔너리에 없다면(최초 사용) 오디오를 가져와 해당 딕셔너리에 추가시켜 줍니다. audioClip = Managers.Resource.Load <AudioClip>(path); _audioClips.Add(path, audioClip); //캐싱에 추가 } } if (audioClip == null) { Debug.Log("Audio Clip Missing! "); } return(audioClip); }
AudioClip GetOrAddAudioClip(string path, Define.Sound type) { if (!path.Contains(Define.ResourcesPath.AudioClip)) { path = Define.ResourcesPath.ToAudio(path); } AudioClip audioClip = null; if (type == Define.Sound.Bgm) { audioClip = GameManager.Resource.Load <AudioClip>(path); } else if (!_audioClips.TryGetValue(path, out audioClip)) { audioClip = GameManager.Resource.Load <AudioClip>(path); _audioClips.Add(path, audioClip); } if (audioClip == null) { Debug.Log($"오디오 클립을 찾을 수 없습니다: {path}"); } return(audioClip); }
public void Play(AudioClip clip, Define.Sound type = Define.Sound.Effect, float volume = 1.0f, float pitch = 1.0f) { AudioSource audio = _audioSources[(int)type]; audio.pitch = pitch; audio.volume = volume; switch (type) { case Define.Sound.Bgm: if (audio.isPlaying) { audio.Stop(); } audio.clip = clip; audio.Play(); break; case Define.Sound.Effect: audio.PlayOneShot(clip, volume); break; default: break; } }
public void Play(string path, Define.Sound type = Define.Sound.Effect, float volume = 1.0f, float pitch = 1.0f) { AudioClip clip = GetOrAddAudioClip(path, type); if (clip != null) { Play(clip, type, volume, pitch); } }
public void Play(string path, Define.Sound type = Define.Sound.Effect, float pitch = 1.0f) //path 통해 받아와 재생(JSON) { if (path.Contains("Sounds/") == false) { path = $"Sounds/{path}"; } if (type == Define.Sound.Bgm) { AudioClip audioClip = Managers.Resource.Load <AudioClip>(path); if (audioClip == null) { Debug.Log("AudioClip Missing! " + path); return; } AudioSource audioSource = _audioSources[(int)Define.Sound.Bgm]; if (audioSource.isPlaying)//이전 bgm 종 { audioSource.Stop(); } audioSource.pitch = pitch; audioSource.clip = audioClip; audioSource.Play(); } else//Effect 음 { AudioClip audioClip = GetOrAddAudioClip(path); //이전에 만난 소스는 또 찾지않음 성능 향상 if (audioClip == null) { Debug.Log("AudioClip Missing! " + path); return; } AudioSource audioSource = _audioSources[(int)Define.Sound.Effect]; audioSource.pitch = pitch; audioSource.PlayOneShot(audioClip); } }
public void Play(string path, Define.Sound type = Define.Sound.Effect, float pitch = 1.0f) { AudioClip audioClip = GetOrAddAudioClip(path, type); Play(audioClip, type, pitch); }