※ 개인적인 공부를 위해 포스팅 하는 글입니다.
#아이템 구성해보기 - 지난포스팅 까지 인벤토리창에 cell(slot) 을 구성하고 관리 해 줄 수 있는 SubSystem을 이용한 매니저클래스까지 준비해둔 상태이다
ㆍ 여기에 아이템을 구성해 볼 예정이다
# Entry 클래스
ㆍ 아이템 엔드리에서 마우스 드래그 및 클릭에 대한 액션을 처리하는게 올바른 구조인거같아 여기서 정의해 주었다.
메타이름과 같게 하는걸 잊지말자
ㆍ 직관적이다. 뭐 내가 선택되었다 강조해주는 부분인듯
아무튼 엔트리 클래스를 작성할 준비를 해주고..
엔트리 보기 위해 상속받는 wbp를 만들어보자 계층구조는 위와 같이 해주자
ㆍ 이미지를 보면 뭘하려는지 대충 알겠다.
# InventorySlots 클래스에서 InventorySlot 클래스를 가져와 slot을 하나하나 그려주고 있으니. Entry 클래스도 여기에 불러와야 기능을 구현할 수 있겠다
ㆍ 클래스를 연결해 줄 수 있는 변수 (타입에 어떤 클래스인질 넣어줄 수 있다)
ㆍ 엔트리가 강조되는칸, 강조되지 않는 칸 계속 바뀌기 때문에 데이터를 따로 저장할 수 있는 변수 하나 더 저장
와 이거 복붙으로 하다 FClassFinder가 UR1InventorySlotWidget으로 되어있어서 디버그 돌리면서 오류찾느라 혼났네....
암튼 정상화 시켜줬고...
ㆍ 서브시스템, 그 중에서도 월드와 생명주기를 맞춘 월드 서브시스템으로 아이템을 관리하고 있으니까 그걸 불러올 수 있는 헬퍼를 사용해줬고,
ㆍ 그 서브시스템을 이용해 아이템을 불러와 FIntPoint를(vector2D같은 xy) 이용해 위치를 연산한 후
함수를 하나 불러오고 있다.
ㆍ 자주 사용하는 기능이기에 함수로 뺴준거고, 말로 설명하는거보다 코드를 보면 더 직관적이다.
ㆍ 엔트리 위젯 슬롯에 이미 무언가 있는데 Item이 null이 되었다면 이동했던지 버렸던지 사용했던지 사라진 상태니까 슬롯을 비워준다.
ㆍ 그게 아닐경우 뭐 아이템을 불러오는 그런 코드
ㆍ Entry의 Init은 별건 없고 현재는 캐싱데이터를 바인드 해주는 간단한 기능만 하고있다.
cpp에서 include해줘야할게 참 많다.. 짬밥인듯 이런건 ㅋㅋ ㅜ
ㆍ 결과화면. 윈도우 캡처 커서가 캡쳐가 안돼~~
'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글
GameAbilitySystem 이론과 초기 세팅 (3) | 2024.10.29 |
---|---|
Inventory - 아이템 DragAndDrop (0) | 2024.10.29 |
SubSystem - 아이템 매니저 (3) | 2024.10.27 |
Scene UI - 인벤토리 구성 (0) | 2024.10.27 |
객체를 따라다니는 UI (1) | 2024.10.25 |