Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    //매개변수(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);
        }
    }
Esempio n. 3
0
    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);
    }
Esempio n. 5
0
    //최초 사용되는 효과음은 캐싱되며
    //두번 이상 사용되는 효과음일 경우 캐싱이 되어있는것을 가져와 빠른 접근을 해주는 함수입니다.
    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);
    }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
    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;
        }
    }
Esempio n. 8
0
    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);
        }
    }
Esempio n. 9
0
 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);
     }
 }
Esempio n. 10
0
    public void Play(string path, Define.Sound type = Define.Sound.Effect, float pitch = 1.0f)
    {
        AudioClip audioClip = GetOrAddAudioClip(path, type);

        Play(audioClip, type, pitch);
    }