-
[UE5] AssetManager ScanUE5/Lyra Clone Coding 2025. 1. 21. 15:06
Experience란?
Experience는 Unreal Engine의 Lyra 프로젝트에서 도입된 개념으로, 게임의 플레이 스타일이나 규칙을 GameMode를 변경하지 않고 동적으로 전환할 수 있도록 하는 시스템이다.
일반적으로 GameMode를 변경하면 게임의 규칙이 바뀌지만, Lyra에서는 GameMode를 고정하고, Experience를 변경하는 방식을 사용한다.
Experience정의
// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Engine/DataAsset.h" #include "ZSExperienceDefinition.generated.h" class UZSPawnData; /** * */ UCLASS() class ZOMBIESURVIVORS_API UZSExperienceDefinition : public UPrimaryDataAsset { GENERATED_BODY() public: UZSExperienceDefinition(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); /** * member variables */ UPROPERTY(EditDefaultsOnly, Category = Gameplay) TObjectPtr<UZSPawnData> DefaultPawnData; UPROPERTY(EditDefaultsOnly, Category = Gameplay) TArray<FString> GameFeaturesToEnable; };
사용할 Experience 정의를 위해 다음과 같이 UZSExperienceDefinition을 정의하고 에디터에서 이를 override하는 DataAsset 객체를 만들었다. 그런데..?
아무런 map을 설정할 수 없다! 기존에 맵을 만들었음에도 불구하고, 선택할 수가 없었다. 왜 그럴까?
AssetManager Scan
AssetManager한테 Map이 있으니 이 친구를 주시를 하고 있어야 한다는 것을 알려주어야 한다. 이를 Scan이라고 한다.
방법 1. Specific Asset 직접 설정 ProjectSetting -> Asset Manager로 들어가서 위와 같이 Specific Asset에 직접 map을 지정해주는 방법도 있고,
방법 2. Directories에서 경로를 설정 Directories에서 폴더 경로를 설정해서 하위의 객체들을 모두 Scan하는 방법도 있다.
Lyra에서는 방법1을 사용하고 있다.
ExperienceDefinition의 경우 DataAsset이 아닌, Blueprint로 만들어야 한다. 왜?는 나중에..
더보기chat gpt에 따르면
✔ ExperienceDefinition은 동적 로딩이 필요하므로, Blueprint를 사용하면 Soft Object Reference 활용 가능
✔ Blueprint 내에서 초기화 로직을 추가할 수 있어, 데이터뿐만 아니라 실행 로직을 포함 가능
✔ GameFeaturePlugin을 동적으로 로드할 수 있도록 Blueprint에서 로직을 처리할 수 있음
✔ DataAsset은 단순 데이터 저장에 적합하지만, ExperienceDefinition은 게임 플레이를 구성하는 복합적인 요소를 포함하므로 Blueprint가 더 적합함🔥 즉, ExperienceDefinition은 단순한 데이터가 아니라, "게임 모드를 동적으로 변경하는 핵심 시스템"이므로 Blueprint로 만들어야 한다! 🚀
ExperienceDefinition Scan은 방법2로 해보자 마찬가지로 Scan을 위해 새롭게 인덱스를 추가해서 Primary Asset Type, Asset Base Class, Has Blueprint Classes 설정을 해준다.
'UE5 > Lyra Clone Coding' 카테고리의 다른 글
[UE5] Camera (0) 2025.02.05 [UE5] PawnExtension(2) - 구성 요소 분석 (0) 2025.02.03 [UE5] PawnExtension (0) 2025.01.31 [UE5] Experience (0) 2025.01.23 [UE5] AssetManager (0) 2025.01.21