1. 캐릭터 유형

캐릭터의 유형에 따라 강점과 약점이 있을 것이다.

(전사 클래스는 힘이 높고 지능이 낮음)

레벨이 높아짐에 따라 클래스의 스텟이 변화할 수 있도록 캐릭터 유형을 다분화한다.

 

열거형을 이용하여 캐릭터의 유형을 생성한다.

데이터 에셋을 이용하여 각 캐릭터의 정보를 저장한다.

커브 테이블을 사용하여 값들의 증가 정도를 조정한다.

 

 

 

2. 데이터 에셋 생성

(1) C++ 클래스 생성

GameplayAbility - Data 폴더 내에 DataAsset을 상속받는 CharacterClassInfo 클래스를 생성한다.

#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "CharacterClassInfo.generated.h"

class UGameplayEffect;

UENUM(BlueprintType)
enum class ECharacterClass : uint8
{
	Elementalist,
	Warrior,
	Ranger
};

USTRUCT(BlueprintType)
struct FCharacterClassDefaultInfo
{
	GENERATED_BODY()

	// 1차 속성의 기본값을 적용하는 게임플레이 이펙트 - 공통
	UPROPERTY(EditDefaultsOnly, Category="Class Defaults")
	TSubclassOf<UGameplayEffect> PrimaryAttributes;
};

UCLASS()
class AURA_API UCharacterClassInfo : public UDataAsset
{
	GENERATED_BODY()
	
public:
	UPROPERTY(EditDefaultsOnly, Category = "Character Class Defaults")
	TMap<ECharacterClass, FCharacterClassDefaultInfo> CharacterClassInformation;

	// 2차, 바이탈 속성의 기본값을 적용하는 게임플레이 이펙트 - 유형별
	UPROPERTY(EditDefaultsOnly, Category = "Common Class Defaults")
	TSubclassOf<UGameplayEffect> SecondaryAttributes;

	UPROPERTY(EditDefaultsOnly, Category = "Class Defaults")
	TSubclassOf<UGameplayEffect> VitalAttributes;

	FCharacterClassDefaultInfo GetClassDefaultInfo(ECharacterClass CharacterClass);
};

(1-1) ECharacterClass 열거형 클래스

캐릭터의 유형을 세가지로 정의하는 열거형 클래스이다.

 

(1-2) CharacterClassDefaultInfo 구조체

각 캐릭터가 개별로 가져가는 1차 속성을 세팅하는 게임플레이 이펙트를 가지는 구조체이다.

 

(1-3) CharacterClassInfo 클래스

모든 캐릭터가 공통으로 소유하는 2차, 바이탈 속성을 초기화하는 게임플레이 이펙트를 가지는 클래스이다.

클래스의 정보를 저장하는 맵이 존재하며, 캐릭터 유형을 넣어서 기본 정보를 가져오는 함수도 구현되어있다.