關於IPointerEnterHandler和IpointerExitHandler的簡單說明


自己在學習UGUI背包系統時用到了,而且遇到一些問題,所以在這里寫一下這兩個接口的簡單說明。

繼承IPointerEnterHandler和IpointerExitHandler這兩個接口后可以實現兩個方法。Void OnPointerEnter(PointerEventData eventData);和Void OnPointerExit(PointerEventData eventData),分別在光標進入某UI時和離開某UI時調用

需要說明:

1.進入和離開的UI必須是代碼所在UI或所代碼所在UI的子對象

2.進入某UI時調用了OnPointerEnter(),在沒有離開此UI時又進入了另一個UI,則不會觸發這個方法OnPointerEnter(),比如:

上圖是一個簡單的背包,有很多的小格子(Grid),有一個大的背景(GridPanel),其中Grid是GridPanel的子對象,我把繼承了借口的腳本放在了GridPanel上,這樣光標進入任意格子以及進入背景都會調用借口中的方法,但是!!光標進入背景后會直接再進入到格子中,光標在進入背景沒有離開背景的情況下進入格子是不會再次調用接口方法的。

我的解決方法很簡單,取消勾選GridPanel上Image組件的RaycastTarget選項,這樣就不會檢測到光標進入背景了。

但是我在做背包的時候,我需要檢測是否把物品拖到了兩個格子之間,所以還是需要讓背景接受射線檢測的,所以我就新建了一個和背景一模一樣的Image,這個Image可接受射線檢測,且不會調用接口方法(在接口方法中可以查看光標下的UI是哪個UI)。

3. 關於接口方法參數的說明,

eventData.pointerEnter指光標下的對象,如eventData.pointerEnter.tag可以查看光標下對象的tag.

eventData.button指發生事件時按下的是鼠標的哪一個鍵,與上面講到的兩個接口類似的還有幾個,如這三個有關拖拽的接口IDragHandler,IEndDragHandler,IBeginDragHandler,實現了有關在UI上拖拽的方法,如eventData.button == PointerEventData.InputButton.Left這條語句判斷拖拽時按下的是不是鼠標左鍵。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM