[CH3-06] WeaponUI

김여울·2025년 8월 13일
0

내일배움캠프

목록 보기
59/114

맡은 UI 중에서 유일한 인게임이었는데 제일 많은 시간을 쓰고 수정도 엄청 했다...
하나 연결하면 다른 부분 다 수정해야하고 무기 담당 조원분과 파일 충돌도 나고
다른 분의 파일에 코드를 추가하면서 혹시나 에러날까봐 노심초사 했다...

🧩 위젯 구성


📎 Weapon Data Assets and Inheritance, Data Driven Game Design in Unreal Engine 5
영상 참고해서 총기 별로 데이터 에셋을 만들었지만 나중에 준모님의 데이터 테이블과 WeaponText 연동이 안돼서 나중에 다시 만들었다.

📎 Create This Weapon Tray UI in Unreal Engine 5?
영상을 참고해서 위젯 블루프린트 만들었다
이전 총기, 현재 총기를 보여주는 애니메이션을 만들었지만 쓸 일이 없어서 삭제
텍스트나 이미지는 ☑ Is Variable 하기

[WeaponTray]
 └─ Canvas Panel
     └─ TrayAnchor
         └─ TrayContent
             └─ Border
                 └─ Overlay
                     └─ Vertical Box
                         ├─ Ammo Tray
                         │    ├─ CurrentAmmoText ("99") ☑
                         │    ├─ "/" (구분자)
                         │    └─ ReserveAmmoText ("5,000") ☑
                         └─ Scale Box
                              └─ RetainerBox_0
                                   └─ WeaponImage ☑
                         └─ Name and Fire Mode
                              ├─ WeaponNameText ("Shotgun") ☑
                              ├─ "|" (구분자)
                              └─ FireModeText ("Single")

Primary Data Asset vs Data Table

지금까지 본 강의에서는 모두 데이터 테이블을 사용했지만 유튜브 스승님께선 PDA를 사용하셔서 나도 그렇게 만들었다.
둘의 차이는 뭘까..?

📎 Epic Games Developer
📎 [Architecture] DataAsset과 Asset Manager

Primary Data Asset

  • 에디터에서 만들 수 있는 타입이 정해진 데이터 오브젝트
  • UPrimaryDataAsset를 상속해서 C++ 클래스나 블루프린트로 만듦
  • 클래스 기반 → 멤버 변수, 함수, 타입 안전성 보장
  • 에디터에서 “Primary Data Asset”으로 인스턴스 생성 → .uasset 파일로 저장됨
  • 주로 아이템, 무기, 캐릭터 설정 같은 개별 오브젝트 단위 데이터에 적합
  • Asset Manager와 연계하면 로드/언로드 관리 쉬움
  • 데이터 변경 시 빌드 타임 타입 체크 가능 (오타나 잘못된 컬럼명 문제 없음)

Data Table

  • FStruct를 기반으로 한 “엑셀/CSV 테이블”
  • 행렬 형태로 데이터 관리 → 하나의 파일 안에 수백~수천 레코드 저장 가능
  • 주로 대량 데이터(몬스터 스탯, 대사 목록 등)에 적합
  • 구조체 기반이라서 런타임에 특정 Row를 Key로 조회
  • 타입은 구조체에서 보장하지만, CSV 편집 중 잘못된 데이터 입력 시 런타임 오류 발생 가능

표로 정리

항목Primary Data AssetData Table
저장 방식.uasset 파일.uasset + CSV/JSON
데이터 단위개별 에셋(오브젝트 단위)행렬(레코드 모음)
타입 안정성강함 (클래스 기반)구조체 기반, CSV는 덜 안전
에디터 편집블루프린트 방식스프레드시트 방식
적합 용도무기, 아이템, 퀘스트 등 개별 설정대사집, 스탯표, 대량 데이터
로드 관리Asset Manager 활용 쉬움대량 데이터 일괄 로드
  • Primary Data Asset → “개별 아이템 카드” (클래스 설계된 카드 한 장씩)
  • Data Table → “아이템 도감” (엑셀 한 시트에 모든 아이템 목록)

Data Asset으로 총기별 데이터 생성


PDA 만들고 데이터 에셋 생성하니까 준모님이 만드신 데이터 테이블이랑 연동이 안됨
코드로 연동 먼저 하고 데이터 에셋 다시 생성 후 데이터 테이블에 추가!

HUD클래스에 UI 연결하기

HUDClass

Widget to Spawn Weapon Tray

위젯을 뷰포트에 띄우는 함수 생성 후 노트 연결

이후 작업은 위젯의 데이터들 제대로 연동되게 하기 🥲

0개의 댓글