언리얼 엔진

[언리얼엔진/GAS] Ability System Component(ASC) - InitAbilityActorInfo

mane 2024. 2. 7. 23:54
728x90
반응형

서론

언리얼 엔진의 Gameplay Ability System에서 능력 시스템 구성요소(Ability System Component, ASC)의 소유자(Owner)와 아바타(즉, 게임 내에서의 대리자 또는 표현)를 설정하는 과정을 설명해드리겠습니다.
이 과정은 네트워크 멀티플레이어 게임에서 중요하며, 능력 시스템 구성요소가 올바르게 복제되고 초기화되어 각 플레이어의 캐릭터에 대한 능력이 적절히 작동하도록 합니다.

능력 시스템 구성요소의 초기화 과정은 소유자 액터와 아바타 액터에 대한 정보를 설정하는 것을 포함합니다. 이 설정은 서버에서 수행되며, 클라이언트는 서버에서 설정된 값을 복제받아 사용합니다.


UAbilitySystemComponent::InitAbilityActorInfo 함수

UAbilitySystemComponent::InitAbilityActorInfo 함수는 Gameplay Ability System의 핵심 요소 중 하나입니다. 이 함수는 능력 시스템 구성 요소가 정확하게 누구에 의해 소유되고 있으며, 어떤 액터에 대한 능력이 발동되는지를 설정합니다.

/**
*    Initialized the Abilities' ActorInfo - the structure that holds information about who we are acting on and who controls us.
*    OwnerActor is the actor that logically owns this component.
*    AvatarActor is what physical actor in the world we are acting on. Usually a Pawn but it could be a Tower, Building, Turret, etc, may be the same as Owner
*/
virtual void InitAbilityActorInfo(AActor* InOwnerActor, AActor* InAvatarActor);

기능 설명

InitAbilityActorInfo 함수는 두 개의 주요 매개변수를 받습니다:

  • InOwnerActor : 이는 능력 시스템 구성 요소의 소유자를 나타냅니다. 일반적으로 이것은 PlayerState 또는 AIController의 인스턴스입니다.
  • InAvatarActor: 능력이 발동되는 액터로, 대부분의 경우 Pawn 또는 캐릭터의 인스턴스입니다.

초기화 시점

  • 플레이어가 제어하는 캐릭터:
    • PossessedBy: 컨트롤러가 폰을 소유한 후 초기화를 수행합니다.
    • OnRep_PlayerState: 플레이어 상태가 클라이언트에 복제된 후 초기화를 수행합니다.
  • AI가 제어하는 캐릭터:
    • BeginPlay: 게임 시작 시 초기화를 수행합니다.

함수 사용

능력 시스템 구성 요소가 소유자(Owner)와 아바타(Avatar)를 알아야 하는 이유는 다음과 같습니다:

  • 소유자: 능력의 쿨다운, 비용, 지속 시간 등이 관리됩니다. 또한 네트워크 복제에 필요한 권한을 갖습니다.
  • 아바타: 능력이 실제로 발동되는 게임 내 캐릭터로, 능력의 효과가 적용되는 대상입니다.
// UAbilitySystemComponent 인스턴스를 가져옵니다.
UAbilitySystemComponent* ASC = ...; // 적절한 방식으로 인스턴스를 얻습니다.

// 소유자와 아바타를 설정합니다.
AActor* OwnerActor = ...; // 능력 시스템 구성 요소의 소유자
AActor* AvatarActor = ...; // 능력이 발동될 대상

// InitAbilityActorInfo 함수를 호출하여 초기화합니다.
ASC->InitAbilityActorInfo(OwnerActor, AvatarActor);
728x90
반응형