Unity

유니티 최적화 - 메모리 최적화 : Object Pooling

동윤큐 2023. 10. 9. 15:33

유니티 최적화 기법 중 메모리 최적화에 대해 설명

 

오브젝트 풀(Object Pooling)

 

오브젝트의 Pool  웅덩이를 만들어두고, 그 웅덩이 안에서 필요할 때마다

객체를 꺼내서 사용하는 것

 

수천 수백의 오브젝트들이 게임상에서 등장하고 사라질 때, 새로 오브젝트들을 생성하고 거기에 파괴하면 메모리를 할당하고 해제하는 일이 반복될 것이다. 유니티에서 메모리 해제에 가비지 컬렉터가 발생하는데, 많은 오브젝트를 파괴할수록 많은 가비지 컬렉터가 발생하고, 이는 CPU에 큰 부담이 된다.

 

 

오브젝트 풀링 X, 생성 파괴 작업

 

오브젝트 풀링 O,

 

오브젝트 풀링 구현 방식

 

오브젝트 풀링의 개념은 간단하다. 게임오브젝트를 파괴하는 대신 비활성화하여 풀에 넣고,
생성하는 대신 풀에서 꺼내어 활성화하면 된다. 따라서 동일한 게임오브젝트 여러 개를 풀링하려면 하나의 풀로 간단히 구현할 수 있다.

 

풀을 스택으로 구현한다고 할 때, 스택에 단순히 GameObejct를 담는다면 풀은 Stack<GameObject> 타입이 된다.

 

 

# 풀링 방식에서 GC 최적화 및 풀링 최적화 방법에 대한 더 자세한 설명은 여기서 확인하면 될 것 같다.

https://rito15.github.io/posts/unity-object-pooling/