UE5 - Destroy() / SetLifeSpan() 비교
1. Destory()
- 액터를 즉시 제거
- 개발자가 직접 호출
✔️ 장점
1) 원하는 타이밍에 제거 가능
2) 충돌, 체력 0, 트리거 발생 들 다양한 조건에 반응 가능
3) 코드 흐름상에서 확실하게 제거 시점을 알 수 있음
❌ 단점
1) 별도 타이머 설정 없이 지연 파괴 불가
2) 자동으로 정리되지 않기 때문에 안쓰면 메모리가 남을 수 있음
3) 서버-클라 간 타이밍 문제 발행할 수도 있음
2. SetLifeSpan(float Time)
- 지정된 시간 후에 Actor가 자동으로 파괴
- 내부적으로 Destroy()가 호출됨
✔️ 장점
1) 일정 시간 뒤 자동 제거(Projectile, 임시 액터에 적합)
2) 충돌 안해도 Actor가 사라짐
3) 타이머 코드 없이 간단하게 시간 설정 가능
❌ 단점
1) "언제" 제거되는지를 세밀하게 제어하기 어려움
2) 다른 이벤트랑 충돌할 수도 있음
3) 즉시 제거가 필요한 경우에는 부적합
- 사용 예시
| 상황 | 추천 함수 | 이유 |
|---|
| Projectile이 충돌했을 때 | Destroy() | 바로 파괴해야 하니까 |
| 날아가다가 아무 것도 안 맞으면 정리 | SetLifeSpan() | 충돌이 없어도 자동 제거 필요하니까 |
| 폭발물이 5초 뒤에 터져야 함 | Timer + Destroy() | 정확한 타이밍 + 조건 처리 필요 |
| 효과음 끝나면 사운드 액터 제거 | SetLifeSpan() | 사운드 길이만큼 자동 제거하면 됨 |
| 적이 HP 0이면 제거 | Destroy() | 즉시 제거가 자연스러움 |
| 임시 UI 표시 오브젝트 제거 | SetLifeSpan() | 일정 시간 후 제거가 편함 |