문제 요약:
전투 중 적이 처치될 때 마다 Hpbar, DamageText 오브젝트가 새로 생성되고 Destory() 되면서 점차 메모리사용량이 증가하고, 장기간 플레이 시 프레임 드랍 발생
문제 원인:
Hpbar와 DamageText에 오브젝트 풀링이 적용되지 않고 Instantiate()와 Destory()로 직접 생성, 제거되고 있었음
해결 방법:
프로젝트에서 활용한 공통으로 사용하는 PoolManager로 코드 리팩토링 시작
Hpbar, DamageText 등의 UI 오브젝트들을 오브젝트 풀에서 꺼내서 사용 후 반환하도록 구조 리팩토링 작업
결과 및 효과:
매 프레임마다 GC 발생 빈도가 낮아지고, 장시간 플레이에도 성능 유지 가능
모든 UI 생성 효과가 부드럽게 이어짐
// EnemyController.cs
var damageText = Managers.Pool.Get<DamageText>("DamageText");
damageText.transform.position = transform.position;
damageText.SetValue(damage);
// DamageText.cs (애니메이션 완료 후)
public void ReturnToPool()
{
Managers.Pool.Release("DamageText", this);
}