美文网首页
Unity中,在按下、滑动、抬起时发出相应事件,用于输入控制

Unity中,在按下、滑动、抬起时发出相应事件,用于输入控制

作者: 全新的饭 | 来源:发表于2023-07-26 13:58 被阅读0次

说明:MyInput需挂在一个全屏Img(设置为透明)上。


image.png

MyInput.cs

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class MyInput : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
{
    private const int DefaultId = -100;
    private int _curId;
    private Vector2 _centerPos;

    // 位置
    public event Action<Vector2> PointerDownEvent;
    // 朝向
    public event Action<Vector2> PointerDragEvent;
    // 位置
    public event Action<Vector2> PointerUpEvent;

    public void Init()
    {
        ResetId();
    }

    public void MyDestroy()
    {

    }

    public void OnPointerDown(PointerEventData eventData)
    {
        if (_curId == DefaultId)
        {
            _curId = eventData.pointerId;

            _centerPos = eventData.position;
            PointerDownEvent?.Invoke(_centerPos);
        }
    }

    public void OnDrag(PointerEventData eventData)
    {
        if (_curId == eventData.pointerId)
        {
            var curDir = (eventData.position - _centerPos).normalized;
            PointerDragEvent?.Invoke(curDir);
        }
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        if (_curId == eventData.pointerId)
        {
            ResetId();
            PointerUpEvent?.Invoke(eventData.position);
        }
    }

    private void ResetId()
    {
        _curId = DefaultId;
    }
}

相关文章

  • CocosCreator中,单指触屏输入

    关注单指输入:按下、滑动、抬起时,传出手指位置(在UI坐标系中)。SingleTouchCtr.ts

  • NewsApp03

    阅读原文 顶部新闻轮播图事件处理 重写dispatchTouchEvent,并且要在按下的时候 判断滑动方向,在X...

  • 无障碍开发

    原理:view在获取焦点、点击、滑动等事件触发时,发出AccessiblityEvent事件,在Accessibi...

  • iOS13新增功能汇总(技巧篇)

    1、滑行键入 iOS13中,新增了滑行键入功能,用户只需将手指轻压键盘并在按键上滑动即可快速打字(手指不用抬起)。...

  • unity3D 脚本中按键或鼠标输入响应函数

    简单地总结一下,unity中脚本实现输入(键盘和鼠标)的响应事件函数,不够完善,以后碰到再慢慢添加。 //***...

  • keydown,keypress,keyup介绍

    1、keydown()keydown事件会在键盘按下时触发。 2、keyup() keyup事件会在按键释放时触发...

  • adb shell —— input 与 wm

    input input 命令主要用于模拟各种事件。如输入文本、滑动、点击等。 几个常用的命令如下: text 向当...

  • Touch事件实现View拖动

      Touch监听事件可以监听手指在屏幕上的行为,例如按下、滑动。抬起。根据这些事件,可以做出View任意推动的效...

  • STM32中按键中断分析

    在按键学习中,我们有用到查询的方法来判断按键事件是否发生,这种查询按键事件适用于程序工作量较少的情况下,一旦程序中...

  • Android 零零散散

    一、CheckList onSingleTapUp在按下并抬起时发生,只要符合这个条件就触发该函数,没有任何附加条...

网友评论

      本文标题:Unity中,在按下、滑动、抬起时发出相应事件,用于输入控制

      本文链接:https://www.haomeiwen.com/subject/qiekpdtx.html