본문 바로가기
Unreal Engine/[Inflearn_rookiss] UE5 Lyra 분석

5. Experience Loading Complete

by 헛둘이 2024. 10. 2.

Experience 로딩에 관한 내용이 길었는데, 드디어 끝났습니다!

 

Experience란 간단히 정리하면 Lyra에서의 라이트한 Level 변경 방법이라고 정리할 수 있습니다.

Level을 변경하는 일은 큰 비용을 동반하기에, Primary Data Asset을 통해 Map과 각종 정보를 저장하고,

그 데이터들을 타이밍에 맞게 불러옵니다.

 

Experience를 온전히 이해하기 위해서는 엔진 구조에 대한 이해가 필요한데,

언리얼 엔진에서 Play를 누르게 되면 엔진 내부적으로 동작하는 함수들이 있습니다.

 

Player가 Spawn되는 위치를 정해준다거나, Spawn되는 클래스가 지정되지 않으면 어떤 클래스를 지정할지 등등

다양한 함수들이 존재하고, 이 함수들은 정해진 시기에 동작합니다.

 

Experience 강의에서 눈여겨봐야 할 점은 이 과정들이 Experience 로딩이 끝나고 난 다음에 이루어져야 하기 때문에

엔진 내부 함수들을 Override해서 타이밍을 건너뛰거나, 원래 오리지널 클래스를 내가 만든 클래스로 대체하는 등의 작업들이 진행되고, 이 작업들은 비동기로 Level이 로딩된 후에 Complete가 되면 Delegate를 통해 실행된다는 것입니다.

 

1. InitGame에서 TimeManager를 통해 다음 프레임에 할 일을 예약

- 이 일은 ExperienceDefinition 타입의 B_DefaultExperience를 스캔하여 Id를 소유하는 것입니다. (이후 사용)

 

2. 그 다음 ExperienceManagerComponent에게 이 Id를 넘겨주어 현재 로딩할 Experience가 무엇인지를 알려줍니다.

- 해당 CDO를 내부 변수 CurrentExperience에 저장

 

3. 그 후 StartExperienceLoad() 함수를 통해 로딩 시작 (상태를 Unloaded -> Loading으로 변경)

- 해당 Id를 번들에 넣은 뒤 로드 되었는지 확인 ( HasLoadCompleted() ) 

- 로드되었다면 ExecuteDelegate로 Delegate 즉시 실행

- 아니라면 Bind하여 Complete 시 실행되도록 Delegate 연결

 

4. 로딩이 완료되면, Broadcast를 통해 PlayerState, GameModeBase에서 OnExperienceLoaded 함수 호출

- 여기서 GameModeBase는 RestartPlayer를 호출하여 원래 로직들(플레이어 위치 설정, 클래스 설정 등)을 다시 호출해줍니다.

- GameState는 플레이어 정보와 컨트롤러에 관한 내용들을 캐싱해주는 것으로 마무리가 됩니다.

 

 

 

 

 

 

 

'Unreal Engine > [Inflearn_rookiss] UE5 Lyra 분석' 카테고리의 다른 글

7. Pawn Extension  (1) 2024.10.07
6. InitState  (0) 2024.10.03
4. Experience Manager Component  (1) 2024.09.30
3. Experience Actor Spawn  (0) 2024.09.29
2. Experience  (0) 2024.09.28

댓글