簡單的背包拖拽

????背包系統(tǒng)一直是比較頭疼的部分,這兩天搞來兩個工程研究了下下面記錄一下背包的拖拽。
一丶準備工作:
1.導入一些圖標資源

2.創(chuàng)建空的Actor存放物品圖標,在構造函數(shù)里隨機添加圖標

?
3.在角色控件里添加函數(shù)Create Inventory

Inventory Size大小自定
?
二丶創(chuàng)建4個UMG

1.首先打開UMG_Inventory設計背包外觀樣式,之后我們將背包物品的內容填充到WidgetSwitch(記得變成變量)

將UMG_GridInventory填充到WidgetSwitcher_0

下面還寫了標簽頁切換,但這里只做了一個標簽頁

2.打開UMG_GridInventory設置背包物品排列樣式,只添加了Scroll Box和WrapBox組件。

這里主要把物品元素插槽UI:UMG_InventorySlot添加進來,數(shù)量是獲取的角色控件里的Inventory數(shù)組

3.打開UMG_DragImage是設置點擊鼠標拖拽物品元素后生成的圖標,所以只需要一個Image控件就可以了。


4.打開UMG_InventorySlot,這里主要是把每個物品圖標傳遞到Border_1里面,上層的控件SizeBox用來設置大小,Border用來做一個邊框。

這里覆蓋三個函數(shù)分別是OnMouseButtonDown,OnDrop,OnDragDetected

OnMouseButtonDown主要設置使用鼠標左鍵點擊物品元素插槽觸發(fā)拖拽

OnDrop主要傳遞角色中物品信息和設置調換物品

OnDragDetected主要是觸發(fā)拖拽之后生成UI:UMG_DragImage,而UMG_DragImage的圖片信息來自Item

最后打開角色控制藍圖設置Tab鍵(隨意)打開和關閉UI菜單

最終結果:
稍后上傳演示視頻:
