0. 개요

데이터 에셋 블루프린트를 생성하고 정보를 채워 넣는다.

그리고 이 정보를 활용하여 어빌리티에 업그레이드를 적용한다.

 

 

1. 데이터 에셋 블루프린트 생성

(1) 업그레이드 키-값 쌍 생성

게임플레이 어빌리티 태그 당 여러 개의 업그레이드 정보를 가질 수 있다.

 

 

(1-1) Native 게임플레이 태그 생성

	// 어빌리티 업그레이드 태그(로그라이크)
	FGameplayTag Upgrades_Fire_FireBolt_IncreaseNum;
	FGameplayTag Upgrades_Arcane_ArcaneShards_IncreaseNum;
	FGameplayTag Upgrades_Fire_FireBlast_IncreaseNum;
	FGameplayTag Upgrades_Lightning_Teleport_DecreaseCoolDown;
	/*
	 * 어빌리티 업그레이드 태그
	 */
	GameplayTags.Upgrades_Fire_FireBolt_IncreaseNum = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Upgrades.Fire.FireBolt.IncreaseNum"),
	FString("Increase Number of FireBolt Projectiles")
	);

	GameplayTags.Upgrades_Fire_FireBlast_IncreaseNum = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Upgrades.Fire.FireBlast.IncreaseNum"),
	FString("Increase Number of FireBlast Projectiles")
	);

	GameplayTags.Upgrades_Arcane_ArcaneShards_IncreaseNum = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Upgrades.Arcane.ArcaneShards.IncreaseNum"),
	FString("Increase Number of Shards")
	);
	
	GameplayTags.Upgrades_Lightning_Teleport_DecreaseCoolDown = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Upgrades.Lightning.Teleport.DecreaseCoolDown"),
	FString("Decrease Cooldown of Teleport")
	);

 

 

(2) 게임 모드

드랍 아이템 테이블, 캐릭터 직업 정보, 어빌리티 정보 등을 게임 모드에서 관리하고 있다.

이제 여기에서 어빌리티 업데이트 정보도 관리할 것이다.

 

(2-1) 어빌리티 데이터 에셋을 들고 있기

	UPROPERTY(EditDefaultsOnly, Category="Ability Upgrade Info")
	TObjectPtr<UAbilityUpgradeInfo> AbilityUpgradeInfo;

 

 

(2-2) 라이브러리에 업그레이드 정보 가져오기 static 함수 추가

	// 어빌리티 업그레이드 정보 가져오기
	UFUNCTION(BlueprintCallable, category = "AuraAbilitySystemLibrary|AbilityInfo", meta = (DefaultToSelf = "WorldContextObject"))
	static UAbilityUpgradeInfo* GetAbilityUpgradeInfo(const UObject* WorldContextObject);
UAbilityUpgradeInfo* UAuraAbilitySystemLibrary::GetAbilityUpgradeInfo(const UObject* WorldContextObject)
{
	AAuraGameModeBase* AuraGameMode = Cast<AAuraGameModeBase>(UGameplayStatics::GetGameMode(WorldContextObject));
	if (AuraGameMode == nullptr)
		return nullptr;

	return AuraGameMode->AbilityUpgradeInfo;
}