오브젝트 풀 · 생성 · 대여 · 반환

같은 탄환, 새로운 수명

동일한 발사를 반복하며 새 객체와 새 대여를 구분해 보세요.
누적 생성사전 준비를 포함
재대여같은 객체의 두 번째 이후 대여
사용 / 대기물리 객체 번호는 재사용
파괴 / 누락보관 초과 / 요청 거부

발사 구간 0 ≤ t < 5초 · 같은 시각의 반환을 다음 요청보다 먼저 처리합니다.

문제 · 원인 · 해결 · 대가

같은 탄환, 새로운 수명

문제와 원인

초당 20발을 0.5초 동안 유지하면 최대 동시 사용은 10개입니다. 매번 생성하면 5초 동안 100개를 거치지만, 준비한 10개는 여러 번 대여할 수 있습니다. 생성 수와 활성 수, 풀에서 꺼낸 횟수와 재대여 횟수는 서로 다릅니다.

수명을 완전히 끝내기

충돌로 일찍 반환한 객체를 재발사한 뒤 예전 수명 타이머가 도착하면 새 대여까지 종료할 수 있습니다. 「오래된 타이머」에서 세대 확인을 켜 보세요. 콜백의 대여 번호가 현재와 다르면 무시합니다. 이미 끝난 객체의 중복 종료도 항상 무시합니다. 실제 구현에서는 이벤트·타이머 취소와 물리·애니메이션 상태 초기화도 필요합니다.

보관 한도는 발사 한도가 아닙니다

10개를 보관하는 풀에 15발을 요청하면 빈 풀은 5개를 추가 생성할 수 있습니다. 전부 반환되면 10개만 남고 5개가 파괴됩니다. 빈 풀에서 요청을 거부하면 생성은 줄지만 발사 자체가 누락되므로 같은 동작 비교가 아닙니다.

비용과 계산 범위

대기 메모리와 사전 준비 비용, 요청·초기화·반환 비용은 남습니다. 여기서는 사건 순서와 호출 수만 계산하며 GC·CPU 시간이나 브라우저 실제 객체 할당량을 측정하지 않습니다. 세대 번호는 자체 설계 예시이며 Unity API가 자동으로 제공하는 기능이 아닙니다.

Unity 풀링과 재사용 · ObjectPool 생성자