关于按钮点击事件的PointerEventData属性详解

17 篇文章 0 订阅

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

自上次更新以来的滚动量(没用过)

  • 20
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在game中,可以通过事件处理来实现按钮事件的响应。你可以使用pygame.event.get()方法来获取所有的事件,并通过遍历事件列表来处理每个事件。在处理事件时,可以通过判断事件类型和位置来确定点的是哪个按钮。 例如,你可以在循环中添加以下代码来处理按钮事件: ``` for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONUP: # 如果有鼠标放开事件 if buttonRect.collidepoint(event.pos): # 判断点的是按钮 print('按钮被点了') # 其他事件处理代码... ``` 在上面的代码中,我们判断事件类型是否为鼠标放开事件(pygame.MOUSEBUTTONUP),然后使用Rect类的collidepoint()方法判断点的位置是否在按钮的区域内(buttonRect.collidepoint(event.pos))。如果是,则表示按钮被点了,可以执行相应的代码。你可以根据你的具体情况修改按钮的Rect对象和按钮被点时的处理逻辑。 希望这个回答对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [pygame捕获键盘事件的两种方式](https://blog.csdn.net/m0_69082030/article/details/124953762)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python培训:pygame事件处理机制详解](https://blog.csdn.net/zy1992As/article/details/128407573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值