언리얼 엔진5 Basic - 무한 맵의 제작

타입·2024년 4월 8일
0

언리얼 강의

목록 보기
16/47

무한 맵의 제작

스테이지 기믹의 설계

  • 스테이지 기믹 기획
    스테이지는 플레이어와 NPC가 1:1로 겨루는 장소
    • 스테이지는 총 4개의 상태를 가지고 있으며 순서대로 진행
      READY: 플레이어의 입장을 처리하는 단계
      FIGHT: 플레이어와 NPC가 대전하는 단계
      REWARD: 플레이어가 보상을 선택하는 단계
      NEXT: 다음 스테이지로 이동을 처리하는 단계
    • 무한히 순환하는 구조로 설계
  • 스테이지 기믹의 설계와 구현
    • 스테이지에 설치한 트리거 볼륨의 감지 처리
    • 각 문에 설치한 네 개의 트리거 볼륨의 감지 처리
    • 상태별로 설정할 문의 회전 설정
    • 대전할 NPC의 스폰 기능
    • 아이템 상자의 스폰 기능
    • 다음 스테이지의 스폰 기능
    • NPC의 죽음 감지 기능
    • 아이템 상자의 오버랩 감지

아이템 상자의 랜덤 보상

  • 애셋 매니저
    언리얼 엔진이 제공하는 애셋을 관리하는 싱글톤 클래스
    엔진이 초기화될 때 제공되며, 애셋 정보를 요청해 받을 수 있음
    PrimaryAssetId를 사용해 프로젝트 내 애셋의 주소를 얻어올 수 있음
    PrimaryAssetId는 태그와 이름의 두 가지 키 조합으로 구성되어 있음
    특정 태그를 가진 모든 애셋 목록을 가져올 수 있음

실습코드

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

  • 프라이머리 애셋 타입 세팅
    '프로젝트 세팅 - 게임 - 에셋 매니저'에서 스캔할 프라이머리 에셋 타입 지정
    프라이머리 에셋 타입과 에셋 베이스 클래스, 디렉터리 입력

    • 사용 코드
      GetPrimaryAssetId() 함수 override하여 PrimaryAssetId로 "ABItemData"를 반환하게 하면

      UCLASS()
      class ARENABATTLE_API UABItemData : public UPrimaryDataAsset
      {
          GENERATED_BODY()
      
      public:
          FPrimaryAssetId GetPrimaryAssetId() const override
          {
              return FPrimaryAssetId("ABItemData", GetFName());
          }
          ...
      };

      UAssetManager::GetPrimaryAssetIdList(FPrimaryAssetType, TArray<FPrimaryAssetId>&) 함수로 리스트를 받아올 수 있음

      void AABItemBox::PostInitializeComponents()
      {
      	Super::PostInitializeComponents();
      
      	UAssetManager& Manager = UAssetManager::Get();
      
      	TArray<FPrimaryAssetId> Assets;
      	Manager.GetPrimaryAssetIdList(TEXT("ABItemData"), Assets);
      	ensure(0 < Assets.Num());
      	
        ...
      }
profile
주니어 언리얼 프로그래머

0개의 댓글