Unity3D_MMO - SoundManager (2)

k_hyun·2022년 10월 15일
0

Unity_MMO_Project

목록 보기
16/33

SoundManager.cs

public class SoundManager 
{
    // 오디오 클립 캐싱을 위해 선언
    Dictionary<string, AudioClip> _audioClips = new Dictionary<string, AudioClip> ();        

	// 화면을 넘길때 모든 클립을 날린다.
    public void Clear()
    {
        foreach (AudioSource audioSource in _audioSources)
        {
            audioSource.clip = null; 
            audioSource.Stop();
        }
        _audioClips.Clear();
    }

    ...

    // 오디오클립 캐싱을 위한 용도
    AudioClip GetOrAddAudioClip(string path)
    {
        AudioClip audioClip = null;
        if (_audioClips.TryGetValue(path, out audioClip) == false)
        {
            audioClip = Managers.Resource.Load<AudioClip>(path);
            _audioClips.Add(path, audioClip);
        }
        return audioClip;
    }
}

기존에는 일일이 ResourceManager의 Load함수를 통해 클립에 접근해서 부담이 되었다.

그걸 해결하기 위해 GetOrAddAudioClip함수를 만들었다.

Clear함수는 씬 전환이 있을때 메모리를 비우기 위해 만들었다.

Manager.cs

public static void Clear()
    {
        Input.Clear();
        Sound.Clear();
        Scene.Clear();
        UI.Clear();
    }

사운드 뿐만 아니라 다른 매니저에 대해서도 Clear()함수를 구현해 주었다.

0개의 댓글