// 메모리에 생성될 때, 단 한 번 호출
// 월드에 스폰된 상태가 아니므로 다른 액터, 월드와 상호 작용X
// 컴포넌트 생성 및 기본 변수 초기화에 사용
constructor()
// 액터의 모든 컴포넌트 생성 및 초기화 직후 자동으로 호출
// 월드에 액터가 스폰되기 전, 컴포넌트끼리 데이터 상호작용에 사용
PostInitializeComponents()
// 게임 시작이나 월드에 액터가 스폰될 때 호출
// 월드와 다른 액터들도 준비된 상태이므로 자유롭게 상호작용 가능
// AI, 게임모드, 플레이어 컨트롤러 등 다른 시스템과의 연동 처리하기 적합
BeginPlay()
// 매 프레임마다 호출
// 실시간 업데이트가 필요한 로직에 적합하지만 성능 저하 고려
Tick(float DeltaTime)
// 삭제 되기 직전에 명시적 호출(게임 종료시엔 호출되지 않을 수 있음)
// 보통 EndPlay에서 주요 정리, Destoryed에서 메모리 해제나 여러 리소스 정리
Destroyed()
// 액터가 월드에서 존재하지 않을 때(게임 종료, 파괴(Destroyed), 레벨 전환 등) 호출
// EEndPlayReason: EndPlay 함수가 호출되는 이유를 나타내는 enum 타입
// 자원 해제 및 상태 저장을 처리
EndPlay(const EEndPlayReason::Type EndPlayReason)