게임개발 캠프 31일차

IIRU·2026년 6월 29일

Object Pooling

오브젝트를 미리 생성 후에 사용해서 재사용 할 수 있도록 보관해두는 것.

장점

  1. 실시간 연산량이 감소한다.
  2. 메모리 단편화(파편화) 발생 방지할 수 있다.
  3. GC를 자주 불러오지 않도록 방지할 수 있다.

단점

  1. 메모리의 사용 효율이 낮다.
  2. 로딩 시간이 증가한다.

Object Pooling의 멤버함수들의 종류와 역할

저장된 오브젝트를 불러오는 함수

public GameObject GetObject(){ }

저장위치로 오브젝트를 다시 돌려놓는 함수

public void ReturnObject(){ }

ObjectPooling의 사용처

자주 생성이 되거나 삭제가 되는 오브젝트에 주로 사용된다.

Object Pooling 사용 시 주의할 점

  1. 메모리를 미리 사용하기 때문에 오히려 메모리 낭비가 있을 수 있다.
  2. 어디서 나온 오브젝트인지 착각하게 되면 이상한 곳에 다시 넣을 수도 있다.
  3. 오브젝트의 상태가 계속 일정하게 유지될 수 있게 해야한다. ( 예를 들어 깎인 hp가 그대로 유지되서 다시 나오면 안된다. )

제네릭으로 사용

 public T GetObject<T>(string name) where T : Component
 {
     if (!pools.ContainsKey(name))
     {
         return null;
     }
     if (pools[name].Count > 0)
     {
         GameObject go = pools[name].Dequeue();
         go.SetActive(true);
         return go.GetComponent<T>();
     }
     else
     {
         //풀이 비어있으면(남은 오브젝트가 없으면)
         GameObject go = Instantiate(objList.Find(obj => obj.name == name));
         go.SetActive(true);
         return go.GetComponent<T>();
     }
 }

(260629_1)

profile
초보 개발자 블로그입니다!

0개의 댓글