Unreal

[Unreal5] 데이터관리 (GameplayeTags, AssetManager, DataSet)

usingsystem 2024. 6. 5. 12:58
728x90

GameplayTags

언리얼 엔진에서 게임 내에서 사용되는 태그 시스템입니다. 이는 게임 객체에 추가 정보를 부여하고 분류하는 데 사용됩니다. 예를 들어, 캐릭터, 아이템, 스킬 등에 대해 특정 기능이나 카테고리를 할당하고 식별하는 데 사용된다.

 

사용방법

.Build.cs 파일에 GameplayeTags를 추가한다.

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "GameplayeTags" });

 

헤더파일과 CPP파일 생성

헤더파일

#pragma once

#include "NativeGameplayTags.h"

namespace R1GameplayTags
{
	UE_DECLARE_GAMEPLAY_TAG_EXTERN(Input_Action_Move);
	UE_DECLARE_GAMEPLAY_TAG_EXTERN(Input_Action_Turn);
}

CPP파일

#include "R1GameplayTags.h"

namespace R1GameplayTags
{
	UE_DEFINE_GAMEPLAY_TAG(Input_Action_Move, "Input.Action.Move");
	UE_DEFINE_GAMEPLAY_TAG(Input_Action_Turn, "Input.Action.Turn");
}

 

반영결과

 

AssetManager(리소스메니저 느낌)

언리얼 엔진에서 자원을 로드하고 관리하는 데 사용되는 중요한 클래스 중 하나입니다. 이 클래스는 게임 실행 중에 게임에 필요한 리소스를 로드하고 해제하는 작업을 관리하며, 리소스의 로드를 최적화하고 메모리 사용을 효율적으로 관리하는 데 도움이 됩니다.

주요 기능

  1. 자원 로드 및 언로드: AssetManager는 게임의 실행 중에 필요한 자원(텍스처, 사운드, 애니메이션 등)을 로드하고 언로드하는 데 사용됩니다. 이를 통해 게임 시작 시간을 최적화하고 필요한 자원만 메모리에 로드하여 메모리 사용을 최소화할 수 있습니다.
  2. 비동기 로딩: AssetManager는 비동기 로딩을 지원하여 게임의 실행 중에 자원을 로드하는 동안 게임 플레이를 중단시키지 않고도 자원을 로드할 수 있습니다. 이를 통해 게임의 반응성을 향상시키고 로딩 시간을 최소화할 수 있습니다.
  3. 자원 관리: AssetManager는 로드된 자원을 관리하고 필요 없는 자원을 해제하는 데 사용됩니다. 이를 통해 메모리 누수를 방지하고 시스템 리소스를 효율적으로 관리할 수 있습니다.
  4. 자원 검색 및 캐싱: AssetManager는 게임에서 필요한 자원을 검색하고 캐싱하는 데 사용됩니다. 이를 통해 게임에서 자원을 빠르게 검색하고 재사용할 수 있으며, 게임 성능을 향상시킬 수 있습니다.

사용방법

#pragma once

#include "CoreMinimal.h"
#include "Engine/AssetManager.h"
#include "R1AssetManager.generated.h"

UCLASS()
class R1_API UR1AssetManager : public UAssetManager
{
	GENERATED_BODY()
	
	UR1AssetManager();
	static UR1AssetManager& Get();
};
#include "System/R1AssetManager.h"
#include "R1LogChannels.h"

UR1AssetManager::UR1AssetManager() : Super()
{
}
UR1AssetManager& UR1AssetManager::Get()
{
	if (UR1AssetManager* Singleton = Cast<UR1AssetManager>(GEngine->AssetManager))
	{
		return *Singleton;
	}

	UE_LOG(LogR1, Fatal, TEXT("Can't find UR1AssetManager"));

	return *NewObject<UR1AssetManager>();
}

만든 AssetManager를 에디터에서 연결해준다.

DataAsset와 PrimaryDataAsset

UDataAsset은 언리얼 엔진에서 데이터 자산을 정의하는 기본 클래스입니다. 주로 여러 유형의 게임 데이터를 저장하고 관리하는 데 사용됩니다. 예를 들어, 무기, 아이템, 캐릭터 능력치 등의 데이터를 UDataAsset을 사용하여 정의할 수 있습니다.

특징

  • 간단한 데이터 저장소: 게임의 다양한 데이터를 저장하는 데 사용됩니다.
  • 직렬화: 에디터에서 데이터를 직렬화하고 쉽게 접근할 수 있습니다.
  • 확장 가능: 다양한 데이터 타입을 저장할 수 있도록 쉽게 확장할 수 있습니다.

 

PrimaryDataAsset은 UDataAsset의 확장판으로, 언리얼 엔진의 Asset Manager 시스템과 통합되어 대규모 데이터 관리에 더 적합합니다. 주로 대규모 게임에서 데이터 로딩과 관리를 효율적으로 하기 위해 사용됩니다.

특징

  • Asset Manager와 통합: 게임의 로딩 시간과 메모리 사용량을 최적화할 수 있는 Asset Manager와 쉽게 통합됩니다.
  • 대규모 데이터 관리: 대규모 데이터 세트를 효과적으로 관리할 수 있습니다.
  • 우선 순위 로딩: 중요한 데이터를 우선적으로 로드하거나 메모리에서 해제할 수 있습니다.

PrimaryDataAsset적용 하면 이제 PDA_AssetData에서 설정하 자원들을 load할 수 있는 상태가 된다.

728x90