빈 퀵슬롯 선택 가능
기존에는 퀵슬롯에 FactoryId가 없거나, 해당 설비 수량이 없으면 선택 자체가 되지 않았다.
빈 슬롯이거나 아이템 수량이 부족한 경우에도 선택은 가능하게 처리했다.
대신 고스트 프리뷰나 파괴 타겟 프리뷰는 제거한다.
if (FactoryId.IsNone() || !InventoryComponent || !InventoryComponent->HasEnoughItems(FactoryId, 1))
{
if (GridBuildComponent->IsBuildMode())
{
GridBuildComponent->CancelBuildMode();
}
else if (GridBuildComponent->IsDestroyMode())
{
GridBuildComponent->CancelDestroyMode();
}
SetSelectedBuildQuickSlot(SlotIndex);
return;
}
빈 슬롯을 눌러도 UI 선택 상태는 반응한다.
설치할 설비가 없을 때는 고스트 프리뷰가 남지 않는다.
퀵슬롯 중복 등록 처리
같은 FactoryId가 이미 다른 슬롯에 있으면 기존 슬롯을 비우고, 새 슬롯으로 이동시킨다.
for (int32 Index = 0; Index < BuildQuickSlots.Num(); ++Index)
{
if (Index == SlotIndex)
{
continue;
}
if (BuildQuickSlots[Index] != FactoryId)
{
continue;
}
BuildQuickSlots[Index] = NAME_None;
BroadcastSlot(Index);
}
슬롯이 바뀌면 Data_Message_Build_QuickSlotChanged 메시지를 브로드캐스트해서 해당 슬롯 UI만 갱신한다.
Back Handle 처리
퀵슬롯과 인벤토리를 CommonUI 방식에 맞춰 처리했다.
InputMode = EKOUIInputMode::All;
// EKOUIInputMode::Game - UI에 마우스(커서)나 키보드 입력이 가지 않는 HUD나 인터페이스
// EKOUIInputMode::Menu - 캐릭터의 마우스 키보드 입력이 제한되어 오로지 UI만 조작
// EKOUIInputMode::All - 마우스 커서는 보이나 캐릭터의 움직임은 가능 (WASD, 드래그)
// EKOUIInputMode::AllNoCursor - 마우스 커서 안보임. 캐릭터의 움직임은 가능
// BackHandler가 True면 CommonUI Input에 의해 ESC가 기본 백 키로 인식되어
// ESC를 누르면 해당 위젯이 닫히게 된다.
bIsBackHandler = true;
정리
인벤토리, 퀵슬롯이 각각 독립적으로 동작하면서 UI 제어 흐름이 분리되어 있는 문제가 있어서
인벤토리 WBP 내부에 퀵슬롯 UI를 추가 배치하여, 인벤토리와 퀵슬롯을 하나의 화면 흐름 안에서 제어할 수 있도록 수정했다.
'Unreal 최종 팀프로젝트' 카테고리의 다른 글
| [TIL] 파이프 시스템 설계 | 최종 팀프로젝트 (0) | 2026.06.04 |
|---|---|
| [TIL] 건설 회전 기능 | 최종 팀프로젝트 (0) | 2026.06.02 |
| [TIL] 설비 및 아이템 데이터화 | 최종 팀프로젝트 (0) | 2026.05.22 |
| [TIL] 건설 시스템 구조 확장 | 최종 팀프로젝트 (0) | 2026.05.21 |
| [TIL] 그리드 기반 건물 파괴 | 최종 팀프로젝트 (0) | 2026.05.20 |