내일배움캠프-언리얼

TIL - 91

이시보 2026. 6. 16. 23:42

인벤토리 프리뷰 & 그리드 슬롯 작업 정리

1. 캐릭터 프리뷰 액터 — 스폰/재사용

  • 프리뷰 액터가 계속 스폰됨
    • 원인: Preview Actor Ref위젯 변수인데 인벤토리 위젯은 열 때마다 새로 생성됨 → ref가 매번 null → 재스폰
    • 해결: 변수는 위젯에 둔 채, 열 때 Get All Actors Of Class(BP_InventoryPreviewActor)로 기존 액터를 찾아 재사용

2. 닫을 때 화면 흰색 번쩍 → 해결

  • 원인: 닫기/열기에서 프리뷰 액터에 건 Set Actor Hidden In Game 토글이 메인 뷰를 한 프레임 번쩍이게 함 (파괴/캡처 토글이 아니라 hide 토글이 범인)
  • 해결: 생성/삭제 로직에서 Set Actor Hidden In Game 노드 제거 (프리뷰 액터를 숨기지 말고 그대로 둠 — 메인 카메라에 안 보이는 위치에 배치)

3. 재사용 시 프리뷰가 흰색으로 나옴 → 해결

  • 증상: 첫 열기는 정상, 두 번째 열기부터 프리뷰 영역이 흰색
  • 원인: Set Brush Resource Object(Image ↔ RT 연결)가 스폰(False) 분기에만 있어, 재사용 분기(새 위젯)에선 연결이 안 됨
  • 해결(Method A): 인벤토리 WBP에서 프리뷰 Image의 Brush → Image(Resource Object) = RT_InventoryPreview디자이너 디폴트로 고정 → 위젯이 새로 생겨도 항상 자동 연결 (런타임 노드 불필요)

5. 프리뷰 크기 / 비율 설정 위치

  • 화면 표시 크기: 인벤토리 WBP의 프리뷰 Image 슬롯 크기 (Canvas Slot Size, 또는 Size Box Override)
  • 해상도/비율: RT_InventoryPreview 에셋의 Size X / Size Y
  • 줌/구도: SceneCapture2D의 FOV Angle(Perspective) / Ortho Width(Orthographic) / 카메라 위치
  • 왜곡 방지: RT의 Size X:Y 비율 = Image 표시 비율을 일치시킬 것 (또는 Scale Box, Stretch=Scale To Fit로 비율 보존)

6. 아이템 그리드 슬롯이 세로로 늘어남 → 해결

  • 증상: 첫 열기에 슬롯이 위아래로 늘어남, 탭 전환/장착 버튼 누르면 정상으로 돌아옴
  • 진단(임시 로그): RefreshInventoryGridLayoutSlotSize(예: 174)를 정확히 계산해 한 번 적용하지만, 슬롯/콘텐츠가 그 뒤에 확정되면서 셀이 늘어난 채 굳음. 탭 전환은 슬롯을 재생성해 리레이아웃되므로 그제서야 반영됨. (이전에 본 268은 다른 상태의 값)
  • 해결: MinDesiredSlotWidth/Height + 슬롯 Fill 정렬을 영역 변화 시 한 번이 아니라 매 갱신(틱)마다 적용하도록 변경 (영역 변화 게이트 제거, bGridAreaChanged는 툴팁 갱신용으로만 유지)
    • 파일: Source/Retrieve/UI/Inventory/InventoryPanelWidget.cppRefreshInventoryGridLayout()
    • 참고: 열려 있는 동안 매 프레임 재배치 (슬롯 수 적어 부담 미미, 추후 "영역/자식수/비정사각일 때만" 적용으로 최적화 가능)

'내일배움캠프-언리얼' 카테고리의 다른 글

TIL - 93  (0) 2026.06.23
TIL - 92  (0) 2026.06.17
TIL - 90  (0) 2026.06.15
TIL - 89  (0) 2026.06.11
TIL - 88  (1) 2026.06.10