關於按鈕點擊事件的PointerEventData屬性詳解


PointerEventData .button

觸發此事件的按鈕

PointerEventData.clickCount

計算按鈕連擊次數,間隔時間很短

public class ExampleClass : MonoBehaviour, IPointerDownHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        int i = eventData.clickCount;
        Debug.Log(i);
    }
}

PointerEventData .clickTime

上次發送點擊事件的時間。這個時間不是每一次點擊都是從新開始計算,會根據上一次的時間繼續累加

PointerEventData.delta

自上次更新以來的指針坐標增量變化變化。
沒有用到,不知道干嘛的

public class ExampleScript : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    private float timeCount;
    private Vector2 deltaValue = Vector2.zero;

    public void OnBeginDrag(PointerEventData data)
    {
        deltaValue = Vector2.zero;
    }

    public void OnDrag(PointerEventData data)
    {
        deltaValue += data.delta;
        if (data.dragging)
        {
            timeCount += Time.deltaTime;
            if (timeCount > 0.5f)
            {
                timeCount = 0.0f;
                Debug.Log("delta: " + deltaValue);
            }
        }
    }

    public void OnEndDrag(PointerEventData data)
    {
        deltaValue = Vector2.zero;
    }
}

PointerEventData .dragging
返回bool值,判斷當前按鈕是否在拖動

PointerEventData .enterEventCamera
與最后一個OnPointerEnter事件關聯的攝像頭。
這個主要用於多相機混合的時候判斷當前按鈕的事件是由哪個相機觸發的.

PointerEventData .hovered
懸停堆棧中的對象列表。
目前發現只能觸發該腳本物體上第一個射線檢測到的子物體

public void OnPointerEnter (PointerEventData eventData)
    {
        for (int i = 0; i < eventData.hovered.Count; i++)
        {
            Debug.Log(eventData.hovered[i].name);
        }
    }

PointerEventData.lastPress
最后一次按下事件的物體,這個會記錄上一次點擊到的按鈕信息,如果是第一打開面板,沒有點擊過按鈕,這個會報空

PointerEventData.pointerCurrentRaycast
包含當前響應射線檢測事件的信息,例如這個gameobject,ui層級等

PointerEventData .pointerDrag
當前觸發 OnDrag事件的物體,設置為空的時候不再觸發OnDrag和 OnEndDrag .

PointerEventData.pointerEnter
當前觸發OnPointerEnter的對象,一般鼠標移動到ui上的時候會觸發這個事件,對應的是OnPointerExit,鼠標移出的時候

PointerEventData .pointerId
鼠標點擊時的id
-1,-2,-3分別對應鼠標左鍵,右鍵和中鍵,手機端觸摸時也有相應的id

PointerEventData .pointerPress
接收OnPointerDown的游戲物體

PointerEventData .pointerPressRaycast
指針按下時響應射線檢測的ui,在一次點擊事件中不會改變,pointerCurrentRaycast這個會隨着拖動等操作變化

PointerEventData .position
當前指針的位置,返回一個vector2向量,這個值是一個屏幕坐標,左下角為原點(0,0),右上角為(屏幕寬,屏幕高),這個屏幕是根據當前分辨率來的

PointerEventData .pressEventCamera
與最后一個OnPointerPress事件關聯的攝像頭,當沒有接收OnPointerDown的游戲物體會報空

PointerEventData.pressPosition
按下的時候的指針位置,同樣的一次點擊事件只有一個

PointerEventData .rawPointerPress
當前執行事件中的物體,即使這個物體不在能夠觸發事件,例如關閉或者被銷毀(沒用過)

PointerEventData .scrollDelta
自上次更新以來的滾動量(沒用過)


免責聲明!

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



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