언리얼 엔진5 Basic - 게임 데이터 관리

타입·2024년 4월 18일
0

언리얼 강의

목록 보기
17/47

게임 데이터 관리

데이터 기반의 게임 시스템 구축

  • 엑셀 데이터의 임포트
    DataAsset과 유사하게 FTableRowBase를 상속받은 구조체를 선언
    엑셀의 Name 컬럼(Key)을 제외한 컬럼과 동일하게 UPROPERTY 속성을 선언
    엑셀 데이터를 csv로 익스포트한 후 언리얼 엔진에 임포트
  • 데이터를 관리할 싱글톤 클래스의 설정
    • 언리얼 엔진에서 제공하는 싱글톤 클래스
      • 게임 인스턴스
      • 애셋 매니저
      • 게임 플레이 관련 액터 (GameMode, GameState)
      • 프로젝트에 싱글톤으로 등록한 언리얼 오브젝트
    • 언리얼 오브젝트 생성자에서 사용하지 않도록 주의
      엔진이 초기화될 때 GEngine라는 전역변수에 자동으로 생성됨

      '프로젝트 세팅 - 일반 세팅'에서 세팅 가능
  • 프로젝트의 주요 레이어
    위에서 아래로만 참조
  • 액터의 생성과 지연 생성의 프로세스
    • SpawnActor
      액터가 생성되자마자 액터와 액터의 컴포넌트들의 BeginPlay()가 호출됨
    • SpawnActorDeferred
      액터를 지연 생성함
      FinishSpawning() 함수를 실행시켜 줘야 BeginPlay()가 호출됨

실습코드

https://github.com/dnjfs/ArenaBattle/commit/df7e5bbc8e0e1a7d9e16c5aa601eb9fcf245496d

  • 싱글톤 참조 함수 구현
    프로젝트 세팅에서 게임 싱글톤 클래스 지정 필수
    아래 함수 구현 후 UABGameSingleton::Get()으로 싱글톤 인스턴스에 접근 가능
UABGameSingleton& UABGameSingleton::Get()
{
	UABGameSingleton* Singleton = CastChecked<UABGameSingleton>(GEngine->GameSingleton);
	if (Singleton)
		return *Singleton;

	UE_LOG(LogABGameSingleton, Error, TEXT("Invalid Game Singleton"));
	return *NewObject<UABGameSingleton>();
}
  • 에셋 비동기 로딩
    UAssetManager::Get().GetStreamableManager().RequestAsyncLoad(const FSoftObjectPath&, TFunction<void()>&&)
    로딩 완료 시 콜백 함수 호출

  • 액터 지연 생성
    UWorld::SpawnActorDeferred<T>(UClass*, FTransform const&) 함수로 지연 생성 후 초기값 세팅 후
    AActor::FinishSpawning(const FTransform&) 함수로 마무리

const FTransform SpawnTransform(GetActorLocation() + FVector::UpVector * 88.0f);
AABCharacterNonPlayer* ABOpponentCharacter = GetWorld()->SpawnActorDeferred<AABCharacterNonPlayer>(OpponentClass, SpawnTransform);
if (ABOpponentCharacter)
{
	ABOpponentCharacter->OnDestroyed.AddDynamic(this, &AABStageGimmick::OnOpponentDestroyed);
	ABOpponentCharacter->SetLevel(CurrentStageNum);
	ABOpponentCharacter->FinishSpawning(SpawnTransform);
}
profile
주니어 언리얼 프로그래머

0개의 댓글