#1. 생명 주기 함수
1. 개념
Unreal Engine에서 생명 주기 함수는 객체의 생성부터 소멸까지 특정 시점에 자동으로 호출되는 함 들입니다. 특히, 이들은 초기화, 갱신, 정리 등 객체의 상태 관리에 중요한 역할을 합니다. 객체의 생명 주기를 크게 세 가지로 나눌 수 있습니다-(1) 초기화 단계, (2) 실행 단계, (3) 종료 단계. 아래 정리한 내용은 일반적인 상황의 경우이며, 특정 상황에 따라 약간의 변동이 존재합니다.
#2. Game Instance
1. 생명 주기 함수
- Init() : 게임 인스턴스가 생성될 때 호출됩니다. 게임 전체에 걸친 초기화 작업에 사용됩니다.
- Subsystem::Initialize() : 각 Subsystem의 초기화 작업이 이루어집니다.
- OnStart() : 첫 번째 월드가 로드된 후 호출됩니다. 게임 시작 시 필요한 추가 설정 수행할 수 있습니다.
- OnWorldChanged() : 현재 월드가 변경될 때 호출됩니다. 월드 전환에 필요한 처리를 수행할 수 있습니다.
- Shutdown() :게임이 종료될 때 호출됩니다. 게임 전체 리소스 정리에 사용됩니다.
#3. Player Controller
1. 생명 주기 함수
- InitializeComponent() : 컴포넌트 초기화 시 호출됩니다.
- PostInitializeComponent() : 모든 컴포넌트의 초기화 작업 완료 후 호출됩니다.
- SeupInputComponent() : 입력 설정을 위해 호출됩니다. 키 바인딩 등 입력 관련 설정을 수행합니다.
- BeginPly() : 게임 시작 시점에 호출됩니다.
- OnPosssess()/AcknowledgePossession() : Player Controller가 Pawn을 소유하게 되는 시점에 호출됩니다.
- OnUnPossess/AcknowledgeUnPossession() : Player Controller가 Pawn의 제어를 잃게 되는 시점.
- EndPlay() : Player Controller가 게임에서 제거될 호출됩니다.
- Destroyed() : Player Controller 객체가 파괴될 때 호출됩니다.
#3. Actor&Actor Component
1. 생명 주기 함수
- AActor::PreregisterAllComponents() : 컴포넌트 등록 전에 호출됩니다.
- UActorComponent::OnRegister() : 각 컴포넌트의 등록 시점에 호출됩니다.
- AActor::PostRegisterAllComponents() : 모든 컴포넌트 등록 후에 호출됩니다.
- AActor::PostLoad() : 액터가 로드된 후 호출됩니다.(Save Game으로부터 로드될 경우)
- AActor::OnConstruction() : 에디터에서 액터가 생성되거나, 수정될 때 호출됩니다.
- UActorComponent::InitializeComponent() : 각 컴포넌트의 초기화 시 호출됩니다.
- AActor::PostInitializeComponent() : 모든 컴포넌트가 초기화 된 이후에 호출됩니다.
- BeginPlay() : 게임 플레이 시작시 호출됩니다.
- EndPlay() : 게임 플레이 종료 시점에 호출됩니다.
#4. 순서
1. GameInstance, Subsystem
Game Instance는 게임 시작 시점에 가장 먼저 생성됩니다. 이와 동시에 Subsystem들의 생성 및 초기화 작업이 진행됩니다.
2. Player Controller & Actor(Character)
Player Controller와 Character 유형의 생성 및 초기화 작업은 어느 것이 먼저라고 설명하기 어렵습니다. 따라서, 서로 간의 의존성 작업(바인딩등의 작업)은 PlayreController의 경우 OnPossess/AcknoledgePossession에서, 그리고 Actor의 경우 PossessedBy에서 수행합니다.
3. Actor Component
Actor Component의 초기화 작업은 InitializeComponent()에서 수행하며, Actor에 속한 모든 Component의 초기화 작업이 완료되는 시점에 AActor::PostInitializeComponent()가 호출됩니다. 따라서, 같은 Actor(ACharacter)에 속한 Component 간 의존성 작업들은 모두 AActor::PostInitializeComponent()에서 수행하는 것이 적절합니다.
'게임개발 > Unreal C++' 카테고리의 다른 글
[Unreal]#Delegate, Event, Delegate vs Event (0) | 2024.07.30 |
---|---|
[Unreal]#스마트 포인터 (0) | 2024.07.30 |
[Unreal]#UBlueprintAsyncActionBase (0) | 2024.07.01 |
[Unreal]#27_Actor 클래스 vs Character 클래스 (0) | 2024.06.25 |
[Unreal_Tip]#2_상위 클래스의 컴포넌트를 사용자 정의 하위 클래스로 변경하는 방법 (0) | 2024.04.10 |