Unity?UGUI的PointerEventData的介紹及使用
Unity UGUI的PointerEventData的介紹及使用
1. 什么是PointerEventData?
PointerEventData是Unity中UGUI系統(tǒng)中的一個(gè)重要組件,用于處理用戶輸入的指針事件。它可以獲取用戶的點(diǎn)擊、拖拽、滾動(dòng)等操作,并提供了一系列的屬性和函數(shù)來處理這些事件。
2. PointerEventData的工作原理
PointerEventData通過封裝底層的輸入系統(tǒng),將用戶的輸入事件轉(zhuǎn)化為Unity中的事件。它可以獲取用戶的點(diǎn)擊位置、點(diǎn)擊類型、點(diǎn)擊對(duì)象等信息,并將這些信息傳遞給相應(yīng)的事件處理函數(shù)。
3. PointerEventData的常用屬性
position
:獲取用戶點(diǎn)擊的屏幕坐標(biāo)。delta
:獲取用戶拖拽的位移量。button
:獲取用戶點(diǎn)擊的鼠標(biāo)按鈕。clickCount
:獲取用戶點(diǎn)擊的次數(shù)。pointerEnter
:獲取鼠標(biāo)指針?biāo)诘腢I對(duì)象。
4. PointerEventData的常用函數(shù)
GetPress()
:判斷鼠標(biāo)按鈕是否按下。GetPressDown()
:判斷鼠標(biāo)按鈕是否剛剛按下。GetPressUp()
:判斷鼠標(biāo)按鈕是否剛剛抬起。IsPointerMoving()
:判斷鼠標(biāo)指針是否在移動(dòng)。IsPointerOverGameObject()
:判斷鼠標(biāo)指針是否在UI對(duì)象上。
5. 完整例子代碼
例子1:獲取鼠標(biāo)點(diǎn)擊位置
using UnityEngine; using UnityEngine.EventSystems; public class ClickPosition : MonoBehaviour, IPointerClickHandler { public void OnPointerClick(PointerEventData eventData) { Debug.Log("點(diǎn)擊位置:" + eventData.position); } }
操作步驟:
- 創(chuàng)建一個(gè)空物體,并將腳本掛載到該物體上。
- 在場(chǎng)景中點(diǎn)擊鼠標(biāo),查看控制臺(tái)輸出的點(diǎn)擊位置。
注意事項(xiàng):
- 需要將腳本掛載到有Collider組件的物體上,以便接收鼠標(biāo)點(diǎn)擊事件。
例子2:判斷鼠標(biāo)按鈕是否按下
using UnityEngine; using UnityEngine.EventSystems; public class ButtonPress : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { public void OnPointerDown(PointerEventData eventData) { Debug.Log("鼠標(biāo)按鈕按下"); } public void OnPointerUp(PointerEventData eventData) { Debug.Log("鼠標(biāo)按鈕抬起"); } }
操作步驟:
- 創(chuàng)建一個(gè)按鈕,并將腳本掛載到該按鈕上。
- 按下和抬起鼠標(biāo)按鈕,查看控制臺(tái)輸出。
注意事項(xiàng):
- 需要將腳本掛載到Button組件上,以便接收鼠標(biāo)按鈕事件。
例子3:獲取鼠標(biāo)拖拽位移
using UnityEngine; using UnityEngine.EventSystems; public class DragPosition : MonoBehaviour, IDragHandler { public void OnDrag(PointerEventData eventData) { Debug.Log("拖拽位移:" + eventData.delta); } }
操作步驟:
- 創(chuàng)建一個(gè)物體,并將腳本掛載到該物體上。
- 按住鼠標(biāo)左鍵拖拽物體,查看控制臺(tái)輸出的拖拽位移。
注意事項(xiàng):
- 需要將腳本掛載到有Collider組件的物體上,以便接收鼠標(biāo)拖拽事件。
例子4:判斷鼠標(biāo)指針是否在UI對(duì)象上
using UnityEngine; using UnityEngine.EventSystems; public class PointerOverUI : MonoBehaviour { public void Update() { if (EventSystem.current.IsPointerOverGameObject()) { Debug.Log("鼠標(biāo)指針在UI對(duì)象上"); } } }
操作步驟:
- 創(chuàng)建一個(gè)UI對(duì)象,并將腳本掛載到一個(gè)空物體上。
- 將鼠標(biāo)指針移動(dòng)到UI對(duì)象上,查看控制臺(tái)輸出。
注意事項(xiàng):
- 需要將腳本掛載到一個(gè)空物體上,并在Update函數(shù)中判斷鼠標(biāo)指針是否在UI對(duì)象上。
例子5:獲取鼠標(biāo)點(diǎn)擊次數(shù)
using UnityEngine; using UnityEngine.EventSystems; public class ClickCount : MonoBehaviour, IPointerClickHandler { public void OnPointerClick(PointerEventData eventData) { Debug.Log("點(diǎn)擊次數(shù):" + eventData.clickCount); } }
操作步驟:
- 創(chuàng)建一個(gè)按鈕,并將腳本掛載到該按鈕上。
- 連續(xù)點(diǎn)擊按鈕,查看控制臺(tái)輸出的點(diǎn)擊次數(shù)。
注意事項(xiàng):
- 需要將腳本掛載到Button組件上,以便接收鼠標(biāo)點(diǎn)擊事件。
參考資料
Unity官方文檔:
https://docs.unity3d.com/ScriptReference/EventSystems.PointerEventData.html
Unity官方教程:https://learn.unity.com/tutorial/unity-ui
以上就是Unity UGUI的PointerEventData的介紹及使用的詳細(xì)內(nèi)容,更多關(guān)于Unity UGUI的PointerEventData的介紹及使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Unity UGUI的ContentSizeFitter內(nèi)容尺寸適應(yīng)器組件使用示例
- Unity?UGUI的StandaloneInputModule標(biāo)準(zhǔn)輸入模塊組件使用示例
- Unity?UGUI的TouchInputModule觸摸輸入模塊組件介紹使用示例
- Unity UGUI的EventTrigger事件監(jiān)聽器組件介紹使用示例
- Unity UGUI Shadow陰影組件的介紹使用示例
- Unity?UGUI的VerticalLayoutGroup垂直布局組件介紹使用
- Unity?UGUI的GraphicRaycaster射線投射組件介紹使用
- Unity UGUI Button按鈕組件使用示例
相關(guān)文章
C# Split分隔字符串的應(yīng)用(C#、split、分隔、字符串)
C# Split分隔字符串主要包括用字符串分隔,用多個(gè)字符來分隔,用單個(gè)字符來分隔等方法實(shí)現(xiàn),下面的具體的實(shí)現(xiàn)代碼2008-11-11C#實(shí)現(xiàn)撲克游戲(21點(diǎn))的示例代碼
21點(diǎn)又名黑杰克,該游戲由2到6個(gè)人玩,使用除大小王之外的52張牌,游戲者的目標(biāo)是使手中的牌的點(diǎn)數(shù)之和不超過21點(diǎn)且盡量大。本文將用C#實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下2022-08-08詳解C# 利用反射根據(jù)類名創(chuàng)建類的實(shí)例對(duì)象
這篇文章主要介紹了詳解C# 利用反射根據(jù)類名創(chuàng)建類的實(shí)例對(duì)象,“反射”其實(shí)就是利用程序集的元數(shù)據(jù)信息,感興趣的小伙伴們可以參考一下。2017-03-03利用C#編寫Linux守護(hù)進(jìn)程實(shí)例代碼
如今的編程是一場(chǎng)程序員和上帝的競(jìng)賽,程序員要開發(fā)出更大更好、傻瓜都會(huì)用到軟件,下面這篇文章主要給大家介紹了關(guān)于利用C#編寫Linux守護(hù)進(jìn)程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2018-01-01C#實(shí)現(xiàn)為一張大尺寸圖片創(chuàng)建縮略圖的方法
這篇文章主要介紹了C#實(shí)現(xiàn)為一張大尺寸圖片創(chuàng)建縮略圖的方法,涉及C#創(chuàng)建縮略圖的相關(guān)圖片操作技巧,需要的朋友可以參考下2015-06-06