sdman.log
로그인
sdman.log
로그인
아이템 UI 및 데이터 이동
이재형
·
2025년 6월 19일
팔로우
0
C#
Drag&Drop
UI
Unity
MinerFergus 개발 정리
목록 보기
5/10
개발 목적
장비창, 강화창 같은 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에서 하는데 활성화에 따른 해제도 추가해야함
이재형
한국사람
팔로우
이전 포스트
광산의 레벨에 따른 랜덤 광물 생성
다음 포스트
장비 강화 재료 적용(1)
0개의 댓글
댓글 작성