- 개요
클라이언트에서 아이템이 들어있는 인벤토리의 슬롯을 클릭하면 아이템을 장착할 수 있도록 작업하겠습니다.
1) 클라이언트 사이드
1 - 1) UI_Inventory 클래스


UI_Inventory 클래스를 포함하는 클래스인 UI_GameScene의 Init 함수에서 포함되는 클래스를 비활성화합니다.
따라서 필요한 부분에서 RefreshUI 함수를 호출할 수 없어 문제가 발생합니다.
따라서 Awake 함수에 포함된 Init 함수에서 RefreshUI 함수를 호출하도록 수정하여 인벤토리를 새로고침합니다.
최종적으로 UI_Inevntory 오브젝트가 활성화되면 RefreshUI 함수를 호출합니다.
1 - 2) UI_Inventory_Item 클래스

위와 같이 멤버변수와 프로퍼티를 추가합니다.
- _frame 멤버변수 : 아이템이 장착되어 있는 경우 활성화되는 UI
- ItemDbId 프로퍼티 : 현재 해당 아이템의 ID
- TemplateId 프로퍼티 : 해당 아이템의 원본 ID
- Count 프로퍼티 : 현재 해당 아이템의 개수
- Equipped 프로퍼티 : 현재 해당 아이템의 장착 여부

Init 함수를 위와 같이 추가합니다.
아이템의 이미지 UI에 클릭되면 호출하는 이벤트를 바인드합니다.
- C_EquipItem 패킷 생성
- 해당 패킷의 ItemDbId와 Equipped 설정
- 서버로 C_EquipItem 패킷 전송

SetItem 함수를 위와 같이 수정합니다.
추가한 4개의 프로퍼티를 인자로 받은 Item의 값으로 설정합니다.
이후 장착 UI의 gameObject를 설정합니다.
1 - 3) Item 클래스


메모리에서 사용하는 Item 클래스에서 Equipped 속성을 설정할 수 있도록 수정합니다.
1 - 4) PacketHandler 클래스

S_AddITemHandler 함수에서 아이템을 획득하여 메모리에 저장한 후 인벤토리 UI를 새로고침합니다.

서버에서 전달된 S_EquipItem 패킷에 대응하는 S_EquipItemHandler 함수를 위와 같이 정의합니다.
받은 패킷의 ItemDbId에 해당하는 Item을 가져와 메모리에 저장합니다.
해당 아이템의 Equipped 여부를 설정한 후에 인벤토리 UI를 새로고침합니다.
- 최종 실행 결과
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
'대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발 > (6) 라이브서비스' 카테고리의 다른 글
| 2D MMO 라이브 서비스 - (1 - 16) 스탯창 (0) | 2025.09.29 |
|---|---|
| 2D MMO 라이브 서비스 - (1 - 15) 아이템 착용 (3) (0) | 2025.09.23 |
| 2D MMO 라이브 서비스 - (1 - 13) 아이템 착용 (1) (0) | 2025.09.23 |
| 2D MMO 라이브 서비스 - (1 - 12) 처치 보상 (2) (0) | 2025.09.22 |
| 2D MMO 라이브 서비스 - (1 - 11) 처치 보상 (1) (0) | 2025.09.22 |