当前位置:丝路教程网 > Unity3D >

Unity教程之-对UGUI长按事件的实现

2016-11-04 10:06 来源: 丝路教程网 分类: Unity3D
498 作者:丝路教程网

[导读] 在使用UGUI过程中,有时我们想长按钮按,执行某个功能,但UGUI只有简单的单击功能,下面我们来看下UGUI长按事件的实现,贴上代码 using UnityEngine; using System.Collections; using UnityEngine.Ev

  在使用UGUI过程中,有时我们想长按钮按,执行某个功能,但UGUI只有简单的单击功能,下面我们来看下UGUI长按事件的实现,贴上代码

  using UnityEngine;

  using System.Collections;

  using UnityEngine.Events;

  using UnityEngine.EventSystems;

  using UnityEngine.UI;[AddComponentMenu(“UI/LongPressButton”)] public class UILongPressButton : Selectable, IPointerDownHandler,IPointerExitHandler,IPointerUpHandler

  {

  [SerializeField] UnityEvent m_onLongPress = new UnityEvent();

  float interval = 0.1f;

  float longPressDelay = 0.5f;

  private bool isTouchDown = false;

  private bool isLongpress = false;

  private float touchBegin = 0;

  private float lastInvokeTime = 0;

  // Update is called once per frame

  void Update ()

  {

  if (isTouchDown && IsPressed() && interactable)

  {

  if (isLongpress)

  {

  if (Time.time – lastInvokeTime > interval)

  {

  m_onLongPress.Invoke();

  lastInvokeTime = Time.time;

  }

  }

  else

  {

  isLongpress = Time.time – touchBegin > longPressDelay;

  }

  }

  }

  public void OnPointerDown(PointerEventData eventData)

  {

  base.OnPointerDown(eventData);

  touchBegin = Time.time;

  isTouchDown = true;

  }

  public void OnPointerExit(PointerEventData eventData)

  {

  base.OnPointerExit(eventData);

  isTouchDown = false;

  isLongpress = false;

  }

  public void OnPointerUp(PointerEventData eventData)

  {

  base.OnPointerUp(eventData);

  isTouchDown = false;

  isLongpress = false;

  }

  }

  好了,本篇unity3d教程到此结束,下篇我们再会!


免责声明:

丝路教程网的部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,如权利人发现存在误传其作品情形,请及时与本站联系。

Unity教程之-对UGUI长按事件的实现

的相关文章
Copyright © 2008-2017 blog.silucg.com 丝路教程网 版权所有 网站地图
点击这里给我发消息
丝路教育