본문 바로가기

Unreal 5 구현 - 인벤토리 시스템

@코야딩구2025. 6. 24. 15:19

1. 설계 핵심

 - 아이템은 데이터 테이블로 관리하여, 추후 수정 및 추가가 용이하도록 구성했다.

 - 인벤토리 시스템을 만들면서 가장 어려웠던 부분은, 클릭된 인벤토리 칸의 인덱스를 식별하는 과정이었다.

 - 인벤토리에 있는 아이템 선택 기능을 구현하기 위해, 각 인벤토리 칸은 UButton을 기반으로 UI를 구성했다.

 - 하지만 UButton::OnClicked는 파라미터를 전달할 수 없는 델리게이트이기 때문에, 단순히 클릭 이벤트에 함수를 바인딩하는 것만으로는 어떤 버튼이 클릭되었는지를 알 수 없었다.

 - 블루프린트 환경에서는 각 버튼에 개별적으로 이벤트를 연결하여 수동으로 처리할 수 있지만, C++로는 그럴 수가 없다.

 - 이를 해결하기 위해 UButton을 상속받는 커스텀 클래스 UC_InventoryButton을 구현하고, 각 버튼마다 고유한 인덱스를 부여했다.

 - 클릭 이벤트 발생 시, 버튼 내부에서 별도로 정의한 델리게이트를 통해 해당 인덱스를 외부로 전달하도록 구성했다.
 - 이를 통해 클릭된 인벤토리 칸이 몇 번째인지 정확하게 파악할 수 있게 되었다.

2. 구현 기능

  2-1. 인벤토리

   - 인벤토리 UI의 위치를 드래그하여 자유롭게 이동할 수 있도록 구현했다.

   - 마우스 커서를 아이템 위에 올리면, 해당 아이템의 정보가 툴팁으로 출력된다.

   - 아이템 간의 위치 이동, 교환, 합치기 기능을 지원한다.

   - 아이템을 선택한 상태에서 인벤토리 외부를 클릭하면, 해당 아이템을 버릴 수 있다.

  2-2. 아이템

   - 맵에 드롭된 아이템을 획득할 수 있다.

   - 인벤토리 내 소비 아이템은 더블 클릭하여 사용할 수 있다.

   - 'D' 키로 체력 포션, 'F' 키로 회복 포션을 사용할 수 있다.

   - 아이템 사용 시, HUD와 인벤토리 슬롯 모두에 사용 쿨타임이 시각적으로 표시된다.

  2-3. HUD 연동

   - 인벤토리에 있는 회복 아이템의 보유 개수를 HUD에 연동해 표시되도록 했다.

3. 영상

 

'Programming > Unreal 5 구현' 카테고리의 다른 글

Unreal 5 구현 - 자기장 시스템  (3) 2025.06.26
Unreal 5 구현 - TPS 조준 시스템  (3) 2025.06.25
Unreal 5 구현 - AI #2  (2) 2025.06.23
Unreal 5 구현 - AI #1  (1) 2025.06.20
Unreal 5 구현 - 미니맵  (0) 2025.06.20
목차