profile image

L o a d i n g . . .

article thumbnail image
Published 2020. 9. 22. 02:57
반응형

Scene Manager

Scene에서 Scene으로 넘어가려면 Scene 등록을 거쳐야 한다.

 

LoadSceneAsync(): LoadScene을 해 버리면 현재 Scene의 내용을 다 날리고, 다음 Scene을 Load 처리할 텐데, 만약 GameScene의 규모가 큰 경우 한참 기다려야 할 수 있다. 

 

 

Sound Manager

MP3 Player   => AudioSource
MP3 음원     => AudioClip
관객(귀)       => AudioListener

Audio Listener는 기본적으로 Scene의 메인 카메라에 설정되어 있다.

 

AudioSource의 PlayOneShot()을 이용하면 해당 Audio Clip을 플레이한다. 두세 개가 겹쳐도 그냥 플레이된다. 단, 실행 중 GameObject를 Destroy하면 Audio Source 또한 삭제되기 때문에 플레이 도중에 중단된다.

따라서 가장 긴 클립의 길이에 맞춰서 Destroy 처리 해 주면 된다.

private void OnTriggerEnter(Collider other)
{
    AudioSource audio = GetComponent<AudioSource>();
    audio.PlayOneShot(clip);
    audio.PlayOneShot(clip2);

    float lifeTime = Mathf.Max(clip.length, clip2.length);
    GameObject.Destroy(gameObject, lifeTime);
}

 

근데 과연 객체가 이 기능(Audio Source)을 들고 있는 게 맞을까? 🤔

 

Object.DontDestroyOnLoad: Scene 이동 시 제거되지 않는다.

 

융통성을 위해서+유지보수를 위해서 다른 버전을 호출하는 방식으로 구현하는 편이 좋다!

 

 

Pool Manager

오브젝트 풀링을 사용하지 않아도 게임 제작에 문제가 되지 않으나, 규모가 큰 게임을 만들다 보면 성능 부하가 생기기 마련이다.

필요할 때마다 리소스 파일을 불러와서 오브젝트를 생성하고 배치하는 이런 과정들이 매우 느리다.
=> 풀링을 통한 개선이 필요하다!

반응형
복사했습니다!