아이템 UI 및 데이터 이동

이재형·2025년 6월 19일

MinerFergus 개발 정리

목록 보기
5/10
post-thumbnail

개발 목적

장비창, 강화창 같은 UI에 아이템 데이터를 조건에 맞게 이동 및 교환처리

구조 진행 순서

1. 아이템 슬롯 클래스 생성 후 초기화 및 기능 메서드 생성
2. 슬롯의 아이템을 드래그&드롭하여 데이터 이동
3. 드래그가 종료시 아이템 슬롯 정보 교환


1. 아이템의 슬롯 클래스 생성과 초기화 및 기능 메서드 생성

SlotData 클래스 정보

Clear() = 아이템을 초기화
UpdateValue() = 아이템의 값을 복사[참조 오류를 방지]
RemoveCount() = 아이템 개수를 감소

여기서 아이템 슬롯의 값이 바뀔 때마다 UI를 업데이트를 해줘야하는 문제가 생겼는데 SlotData에서 델리게이트를 생성하여 값이 변경될 때마다 업데이트 하도록 구조를 생각함

슬롯마다 아이템에 변화가 있을 때는 델리게이트 imgUpdate에 슬롯의 UI이미지를 변경하는 메서드를 외부(슬롯)에서 등록하고 값이 변경될 때마다 같이 실행시키게 설계

아이템 슬롯이 있는 클래스에 imgUpdate메서드를 등록

강화창에서 슬롯의 값이 변경될 때 처리하는 SetImage 메서드


2. 슬롯의 아이템을 드래그&드롭하여 데이터 이동

Drag인터페이스를 상속 추가

드래그의 상태에 따른 인터페이스 정의

어느 슬롯에서든 아이템을 이동시킬 때

image = 이동중인 아이템 이미지
slotData = 드래그 한 아이템 슬롯 데이터
saveData = 드래그 중인 아이템 슬롯 데이터
rectTrasnsform = UI 이미지 위치

아이템 드래그를 시작할 때 SetItem를 실행되고 드래그한 아이템 슬롯의 정보를 받아서 slotData, saveData에 저장


3. 드래그가 종료시 아이템 슬롯 정보 교환

아이템을 드래그 중인 상태에서 다른 슬롯에 드랍을 하면 RemoveItem메서드가 실행이 되고 인터페이스(ISlotUpdate: 슬롯의 데이터를 교환)의 여부를 확인 후 slot.UpdateSlot 메서드를 실행

슬롯 이동시 아이템을 교환
이동할 슬롯에 아이템이 있을 때는 서로의 아이템을 교환
슬롯에 아이템이 없으면 갖고 있는 아이템 데이터를 넘겨줌

아이템을 획득하는 조건은 사용하는 슬롯에 따라 다름 (장비, 강화, 인벤토리)


실제 인게임 이미지

이동 전 인벤토리

갑옷과 모자 아이템의 위치를 드래그&드롭으로 변경

신발 아이템을 빈 슬롯 위치로 드래그&드롭


마무리하면서...

조건에 맞는 슬롯에 따라 아이템을 이동할 수 있게 테스트를 진행하면서 예외사항이 발생하므로 지속적으로 진행하면서 확인해야 함 또,
슬롯 클래스에서 시작시 이벤트를 등록을 Start에서 하는데 활성화에 따른 해제도 추가해야함

profile
한국사람

0개의 댓글