Unreal Engine/[Inflearn_rookiss] UE5 Lyra 분석

16. 맵 이동 시 GameFeature를 이용한 InputConfig 연결

헛둘이 2024. 11. 3. 06:12

이전 시간의 GameFeature 활성화 이후 어떤 행위(Action)을 할 것인가에 대한 내용입니다.

 

Action을 실행하는 시점은 GameFeature가 로딩이 완료된 시점이여야 하기에, Experience를 불러오는 과정에 하나의 공정을 추가하여 진행합니다.

 

이름하여 ExecutingActions!

 

이 과정은 UHmExperienceManagerComponent::OnExperienceFullLoadCompleted 에서 진행됩니다.

1. Context에 현재 World를 세팅해줍니다.

 

2. 해당 Context를 OnGameFeatureActivating의 인자로 넘겨줍니다.

 

3. 각 GameFeatureAction들은 해당 Context를 이용하여 해당 World에서만 로직을 수행하게 됩니다.

 

 

GameFeature에는 여러 Action들을 엮을 수 있는데, Action들은 UGameFeatureAction를 상속받아서 구현됩니다.

 

각 Action들은 상태가 변경될 때마다 이벤트를 받게 되는데, 현재 GameFeature가 Registering, Loading, Activating 각 상태들에 따른 행위를 정의할 수 있습니다.

 

현재 Lyra에서는 Activating 상태에서 EnhancedInput을 등록하게끔 되어 있고, 이 행위는 UGameFeatureAction을 상속받은 UGameFeatureAction_WorldActionB를 상속받은 UGameFeatureAction_AddInputConfig에서 실행됩니다.

 

  

이 로직들은 기존에 DefaultMap을 구현할 때 DefaultPawn에 EnhancedInput을 붙여주는 로직과 흡사합니다.

 

직접적으로 플레이어에 InputConfig를 등록하는 로직은 HmHeroComponent의 InitializePlayerInput에서 

GameFeatureAction_AddInputConfig의 HandlePawnExtension에 다이렉트로 메시지를 쏴주면서 이루어지게 됩니다.

 

여기서 쏴준 메시지는 아래 HandlePawnExtension에서 받게 됩니다.