Pooling
원래 프리팹을 load해서 instantiate해서 씬에 배치했다. 어딘가에 저장되어있는 리소스 파일을 메모리에 불러왔다가 그걸 다시 instantiate해서 씬에 배치하는 일련의 과정들이 느리다. cpu의 성능은 좋아졌으나 여전히 cpu와 ssd의 거리는 물리적으로 많이 떨어져있다. 그렇다는 것은 리소스를 필요할 때마다 하나씩 가져와서 배치하여 사용하는 것은 느리다. 따라서 개선할 방법이 필요하다. 따라서 풀링을 이용한다.
Pool Manager
DontDestroyOnLoad 함수
: Unity에서는 씬 단위로 공간을 구현함, 씬 전환이 될 때 이전 씬은 언로드 되면서 게임 오브젝트들이 destroy된다. 그러나 DontDestroyOnLoad 함수를 사용하면 destory되지 않게 된다.
만약 prefab의 오브젝트들 중 poolable 객체가 두개가 있을때 Pool_Root 아래에 이 두개의 객체가 모두 들어가게 되는데
결론적으로 풀링하고자 하는 객체가 어떤 것인지 모호하게 된다. 물론, 이름으로 찾는 방법도 있지만 두개가 아니라 Poolable객체가 여러개가 되었을 때 일일이 이름을 찾는 것도 효율적이지 못하다. 따라서 Pool_Root도 여러개의 Root로 분류해준다. 객체마다 구분해서 같은 타입끼리 정리하면 된다.
728x90
반응형
'Unity' 카테고리의 다른 글
JSON, XML (0) | 2021.11.29 |
---|---|
Coroutine (코루틴) (0) | 2021.11.29 |
프리팹 안에 여러 프리팹이 있는 구조일 경우 (0) | 2021.11.02 |
C# reflection (0) | 2021.09.17 |
Unity Animation loop / 유니티 애니메이션 반복 (0) | 2021.09.15 |
댓글