UE5 - 어빌리티 안에서 플레이어 컨트롤러 가져오기

haura·2025년 5월 30일
0

UE5

목록 보기
20/21
APlayerController* PC = Cast<APlayerController>(GetController())

보통의 경우 위와 같은 방식을 통해 캐스팅하여 컨트롤러를 가져오지만 GAS에서는 아래의 방식을 주로 사용한다.

APlayerController* PC = Ability->GetCurrentActorInfo()->PlayerController.Get(); 
  • GetCurrentActorInfo()는 어빌리티가 실행될 때 GAS가 자동으로 만든 컨텍스트이고 이 컨텍스트에는 어빌리티를 실행한 캐릭터의 컨트롤러가 자동으로 설정되어 있다.
    -> 따라서 이 방식은 "이 어빌리티를 누가 실행했는가"를 기준으로 정확하게 컨트롤러를 가져올 수 있다.

어떻게 실행 주체를 추적할까?

  • Ability가 실행되면 AbilitySystemComponent가 아래와 같은 흐름으로 정보를 구성한다.
  1. Ability 실행 시 InitAbilityActorInfo() 호출
  2. 현재 컨트롤러, 캐릭터, 메시 등을 내부 구조체에 저장
  3. 이 정보는 GetCurrentActorInfo()를 통해 접근가능
    즉, 직접 연결하거나 관리할 필요 없이 '누가 실행햇는지'를 기준으로 자동으로 설정된다.

0개의 댓글