1. 개요
더보기
#include "SubSystem/StageSubSystem.h"
#include "GetOutOf.h"
#include "DataTable/LevelSequenceDataTable.h"
#include "LevelSequence/GOOLevelSequenceActor.h"
void UStageSubSystem::Initialize(FSubsystemCollectionBase& Collection)
{
Super::Initialize(Collection);
LevelSequenceDataTable = LoadObject<UDataTable>(nullptr, TEXT("/Game/_GetOutOf/DataTable/DT_LevelSequence"));
if (IsValid(LevelSequenceDataTable))
{
LevelSequenceDataTable->GetAllRows<FLevelSequenceDataTable>(TEXT(""), LevelSequenceRows);
}
else
{
LOG(Error, TEXT("LevelSequenceDataTable이 유효하지 않습니다"));
}
}
Subsystem의 Initialize 함수에서 DataTable을 불러오고 있었다. 에디터 상에서는 정상 작동했지만, 패키징 상에서는 DataTable이 누락돼서 불러오지 못 하는 상황이 발생했다.
StageSubsystem도 다른 Subsystem처럼 생성자에서 DataTable을 불러오고 싶었지만, StageSubsystem만 생성자에서 DataTable을 불러오는 경우 오류가 발생했다. 그래서 생성자가 아닌 Initialize에서 DataTable을 불러오도록 구현한건데, 호출 시기때문에 DataTable에 대한 참조가 누락되는 것으로 원인을 가정했다.
2. Primary Asset
에셋에 대한 참조를 유지시켜주는 기능이 있었다. Primary Asset인데, Blueprint 클래스로 Primary Asset Label을 상속받은 후 참조를 유지하기를 바라는 리소스들을 추가해준 뒤 Project Setting에서 해당 Primary Asset을 등록해주면 된다.



결과
패키징 버전에서도 리소스에 대한 참조가 유지돼서 Subsystem의 Initialize에서 DataTable을 로드해도 문제가 발생하지 않았다. 앞으로도 아주 유용하게 활용할 수 있는 기능인 것 같다.
Primary Asset
'기타 > GetOutOf' 카테고리의 다른 글
| [언리얼엔진] GetOutOf 개발일지 #13 - Stealth AI 구현 (4) | 2025.08.06 |
|---|---|
| [언리얼엔진] GetOutOf 개발일지 #12 - Prologue 구현 (1) | 2025.07.30 |
| [언리얼엔진] GetOutOf 개발일지 #10 - Level Streaming 구현 (2) | 2025.07.18 |
| [언리얼엔진] GetOutOf 개발일지 #9 - UI 작업, 중간점검 (0) | 2025.07.16 |
| [언리얼엔진] GetOutOf 개발일지 #8 - Sprint, FlashLight 구현 (0) | 2025.07.13 |