TIL - 파츠 위젯 만들기 및 3D 에셋 보이기

Kyu_·2026년 7월 2일

32주차

목록 보기
4/5

파츠

파츠 위젯 ESC로 끄기

  • 현재 구조는 CommonUI를 참조만 하고 있고 계층 구조는 안쓰고 있다.
  • PlayerController에서 레거시 InputComponent->BindKey로 전역 하드 코딩해서 TogglePauseMenu()를 호출하는 구조

그래서 파츠 위젯을 ESC로 끌 수 있고, ESC를 눌렀을때 지금은 설정 메뉴가 나오지만 그것보다 우선순위로 위젯을 끌 수 있게 ANSPlayerController::TogglePauseMenu 에 이미 존재하는 분기에 코드를 추가하기로 했다.

UIManager에 등록하지 않은 이유

기존 UIManager는 전역적인 UI인스턴스를 하나 만들어서 재사용하는 구조, 허나 PartNPC의 상호작용 Widget은 매번 CreateWidget을 하고 NPC마다 다른 위젯을 띄워주는 방식으로 작동하고 있음

파츠 위젯에 파츠가 안불러와지는 버그

파츠 UI에 파츠가 안불러와지는 버그가 발생했다. 우선 PartEquipWidget클래스에 로그를 찍어서 판단해봄
확인결과 DT에 슬롯태그가 제대로 등록이 안되었을 가능성을 확인
DT에서 확인해보니 태그등록이 빠져있었다. 태그 등록하니 해결

파츠표시가 명확하지 않음

파츠가 아이콘으로 보이고 클릭시 정보가 화면 중앙 설명칸으로 들어가야 하는데 지금은 그렇지 않음
PartCatalogEntryWidget에서 NameText부분을 삭제하고 Icon만 남기게끔 조정, 실제 아이콘만 보이게끔

파츠 아이콘이 위젯에 표시가 안됨

어딘가에서 early return이 의심되어서 로그로 먼저 확인 -> 로그에는 정상으로 잘 로드해오고 있음 에디터쪽을 확인해보자

에디터에서 PartCatalogEntry의 부모로 Size box를 지정한후 명시적으로 크기를 지정해주어서 해결하였다.

파츠를 클릭했을때 정보가 정보창에 안뜸

파츠 아이콘을 선택하면 파츠 정보가 Detail창에 나와야 하는데 나오지않음 -> 단순한 오타 문제였음(바인딩하는 로직과 다른)

구매가 안됨

구매로직은 존재하지만 구매를 눌렀을때 아무것도 작동을 안함 + 모든 파츠를 가지고 있다고 나오는 문제

우선 구매후 장착하는 SelectEquippedSlot이 불러와지지 않아서 추가함 -> 왼쪽에 장착 슬롯이 갱신이 안됨

슬롯이 열리지않아서 파츠 장착이 안된거였음

3D 메시 넣기로

조금더 좋은 UX를 위해서 파츠 Detail에 회전 가능한 3D메시에셋을 넣기로 했다. 파츠쪽 아이콘에는 최대한 입체감을 살릴 수 있는 이미지로 변경하기로 했다.

3D에셋을 넣기위해

UMG의 Image위젯은 브러시에 두 종류만 넣을 수 있다. Texture2D, Material 근데 SceneCaptureComponent2D가 결과를 담는 RenderTarget은 Image->SetBrushFromTexture()라는 전용함수에 바로 못넣음 그래서 우회 경로가 필요하다.

UI용 머티리얼을 하나 만들고, 그 머티리얼에 TextureParameter를 하나 두고, 런타임에 UMaterialInstanceDynamic을 만들어서 그 파라미터에 RenderTarget을 꽂아넣고 Image->SetBrushFromMaterial()로 위젯에 표시

텍스처가 제대로 스트리밍 되지 않는 문제

텍스처가 제대로 스트리밍 되지 않아서


이런식으로 나옴

로그를 찍어서 어딘지 확인해보고 있는데 불러오는 텍스처가 0개임을 확인

로그를 찍어서 어딘지 확인해보고 있는데 불러오는 텍스처가 0개임을 확인
텍스처를 미리 로드하는 쉐이더로딩을 만들어 놓고서 확인을 함 -> 그래도 안됨
UPrimitiveComponent::bForceMipStreaming — "이 컴포넌트의 텍스처는 화면 점유율 계산 무시하고 항상 풀 밉 유지 를 한번 사용 해보고 있음 -> 해결, 기존 테스트헀던 모든 로직들 삭제

0개의 댓글