관리 메뉴

Mini

[UE5] GAS 구현 // ASC, AS Getter구현 본문

UE5/GAS

[UE5] GAS 구현 // ASC, AS Getter구현

Mini_96 2024. 5. 26. 17:41

1.캐릭베이스 > ASC, AS 추가해주기

	UPROPERTY()
	TObjectPtr<UAbilitySystemComponent> AbilitySystemComponent; 

	UPROPERTY()
	TObjectPtr<UAttributeSet> AttributeSet; //속성을 가르키는 포인터

 

2. 적의경우 적 클래스내부에서 직접 초기화할것임 //PS사용안할것임!

AAuraEnemy::AAuraEnemy()
{
	// 가시성 콜리전 채널(ECollisionChannel::ECC_Visibility)에 대한 메시 콜리전 응답을 ECollisionResponse::ECR_Block으로 설정합니다.
	// 이래야 윤곽선나옴
	GetMesh()->SetCollisionResponseToChannel(ECC_Visibility, ECR_Block);

	AbilitySystemComponent = CreateDefaultSubobject<UAuraAbilitySystemComponent>("AbilitySystemComponent");
	// UAuraAbilitySystemComponent 타입의 AbilitySystemComponent를 기본 하위 객체로 생성합니다.
	// "AbilitySystemComponent"라는 이름을 가진 이 컴포넌트는 캐릭터의 능력(스킬)을 관리합니다.

	AbilitySystemComponent->SetIsReplicated(true);
	// AbilitySystemComponent의 네트워크 복제를 활성화합니다.
	// 이는 멀티플레이어 게임에서 다른 플레이어들과 능력 정보를 동기화하기 위해 필요합니다.

	AttributeSet = CreateDefaultSubobject<UAuraAttributeSet>("AttributeSet");
	// UAuraAttributeSet 타입의 AttributeSet을 기본 하위 객체로 생성합니다.
	// "AttributeSet"이라는 이름을 가진 이 컴포넌트는 캐릭터의 다양한 속성(예: 체력, 마나, 공격력 등)을 관리합니다.

}

 

3. 플레이어의경우 PS에서 ASC,AS를 가지도록 구현

위의 코드를 고대로 PS에 넣으면됨

 

4. ASC에서 제공하는 인터페이스 추가 => Component Getter 사용

/** Returns the ability system component to use for this actor. 
//It may live on another actor, such as a Pawn using the PlayerState's component */
	virtual UAbilitySystemComponent* GetAbilitySystemComponent() const = 0;

순수가상함수 -> 구현해줘야함

컴포넌트를 리턴만해주면됨

UAbilitySystemComponent* AAuraPlayerState::GetAbilitySystemComponent() const
{
	return AbilitySystemComponent;
}

 

5. 속성 Getter는 직접 만들어 줘야함

UAttributeSet* GetAttributeSet() const {return AttributeSet;} //@Getter

4,5번작업을 PS, Enemy 클래스에 각각 해주면됨!

 

https://github.com/DongHoonYu96/GameplayAbilitySystem_Aura/commit/13588b712f7b86559523b710e58de8dd22525af5

 

feat : 능력,속성 포인터, Getter 구현 · DongHoonYu96/GameplayAbilitySystem_Aura@13588b7

대상 : 캐릭터베이스-(상속)적, PlayerState

github.com

 

6. 할일 : PS와 Player를 연결해줘야함

Player에서 Component, AS호출시 nullptr임!