언리얼엔진/언리얼 C++

Inventory - 아이템 DragAndDrop

season97 2024. 10. 29. 01:28

 개인적인 공부를 위해 포스팅 하는 글입니다.


#놀랍게도 DragDrop의 상속을 받는 클래스를 생성할 수 있다.

 

ㆍ 실제로 마우스를 드래그 드롭 하는 순간에 보이는 위젯도 별도로 만들어줘야 하기에, 미리 클래스도 생성해줬다.

-> 흣챠~! 들리는 이미지

 

# DragDropOperation

ㆍ 이미 엔진레벨에서 정의가 되어있어서 뭐 사실 별 기능은 없다. 추후 확장성을 위해 커스텀하기 편하게 가져와 사용할 준비만 해준것.

 

ㆍ 위젯 부분도 지금은 뭐 사이즈랑, 아이콘 이미지 세팅같은걸 받아줄 준비정도만 해주는정도로 끝냈다.

 

 

#Entry 클래스

ㆍ 인풋과 드래그와 관련된 함수들이 정의되어있는데, 이 함수들의 구현부를 한번 작성해보자

ㆍ Drag위젯클래스를 받을 수 있는 변수도 선언해주고, 당연히 전방선언 했다.

ㆍ 버튼을 누르면 들린 위젯 이미지가 마우스 포지션에 맞게 이리저리 연산해주는 코드.

ㆍ 드래그 하고있는게 감지되면.. 세팅을 해주는 부분

ㆍ 그 이외 취소와 유틸리티에 관련된 함수들까지 정의 완료. 

사실 찾아보면 엄청 자세히 나오는 코드들이다.

 

 

# 엔트리만 드래그가 감지되어 이리저리 움직이면 이상할 것이다.

ㆍ Slot에서도 어떠한 상호작용이 필요할 것이므로 Slots 클래스로 가서 드래그와 관련된 함수를 정의해줬다.

 

ㆍ 지금은 그냥 초기화해주는 용도로만 쓰고있다.

Define 클래스에서 슬롯사이즈를 그냥 50 50 으로 해줬었다.

ㆍ 인벤토리 창 떠난경우엔 그냥 초기화, 만약 뭐 버리기 기능이있다면 여기에 추가하면 될듯!

 

#핵심은 Drop했을때의 기능이겠다.

OnInventoryEntryChanged함수는 이전 포스팅 글에서 다루고있다. 

ㆍ 지금은 간단하게 아이템의 위치를 변경해주는 코드 

 

ㆍ 커서 캡처가 안돼서 그렇지 잘 작동하고있다.