Unreal Engine Actor 라이프사이클 이해하기
Unreal Engine에서 Actor는 생성부터 제거까지 정해진 순서에 따라 생명주기를 가진다. 각 단계의 호출 시점과 용도를 이해하면 초기화 코드의 위치를 명확하게 나눌 수 있고, 예상치 못한 버그를 줄일 수 있다.
1. 생성자
AActor()
Actor 객체가 메모리에 생성될 때 한 번만 호출된다. 이 단계에서는 월드가 아직 완전히 준비되지 않았기 때문에, 다른 액터에 접근하거나 게임 로직을 실행하는 것은 적절하지 않다. 주로 기본 값 설정이나 컴포넌트 생성처럼, 객체 자체의 구조를 만드는 역할을 담당한다.
2. PostInitializeComponents
PostInitializeComponents()
Actor가 소유한 모든 컴포넌트가 생성되고 초기화된 직후 호출된다. 각 컴포넌트가 정상적으로 준비된 상태이기 때문에, 컴포넌트 간의 참조 연결이나 초기 상태 설정에 적합하다. 컴포넌트 기반 설계를 사용할수록 이 단계의 중요도가 높아진다.
3. BeginPlay
BeginPlay()
Actor가 월드에 배치되고 실제 게임이 시작되면서 호출된다. 이 시점부터 다른 액터와의 상호작용이 가능하며, 대부분의 게임 로직은 여기서 시작된다. 생성자와 달리 월드 정보에 안전하게 접근할 수 있기 때문에, 초기 상태 설정의 기준점으로 자주 사용된다.
4. Tick
Tick(float DeltaTime)
게임이 실행되는 동안 매 프레임 호출된다. 시간에 따라 변하는 로직이나 지속적인 상태 갱신에 사용되며, DeltaTime을 통해 프레임 독립적인 처리가 가능하다. 다만 모든 Actor에 Tick을 사용하는 것은 성능에 영향을 줄 수 있으므로, 꼭 필요한 경우에만 사용하는 것이 좋다.
5. Destroyed
Destroyed()
Actor가 제거되기 직전에 호출된다. 런타임 중에 생성한 객체나 동적 할당된 리소스를 정리하는 데 사용되며, 더 이상 Actor가 게임에 영향을 주지 않도록 마무리하는 단계다.
6. EndPlay
EndPlay(const EEndPlayReason::Type EndPlayReason)
게임 종료, 레벨 전환, 또는 Actor 파괴와 같은 상황에서 호출된다. EndPlay는 종료 사유를 함께 전달받기 때문에, 상황에 따라 공통 정리 로직을 처리하기에 적합하다. Actor 라이프사이클의 마지막 단계로, 안전하게 상태를 정리할 수 있는 지점이다.
'내배캠 TIL' 카테고리의 다른 글
| [내배캠 TIL 260112] Unreal Timer를 활용한 액터 생성 (0) | 2026.01.13 |
|---|---|
| [내배캠 TIL 260112] Unreal c++을 활용한 액터의 이동과 회전 (0) | 2026.01.12 |
| [내배캠 TIL 260108] Unreal & VS 호환 문제 (0) | 2026.01.08 |
| [내배캠 TIL 260106] C++ 머드게임 아이템 자동사용 로직 개발 (0) | 2026.01.06 |
| [내배캠 TIL 260105] C++ 일반 포인터와 Unique_ptr (0) | 2026.01.05 |