Android Unity2d机器人检测触摸
如何在unity for android的按钮上检测触摸和长触摸? 我已经尝试过此功能,但如果我触摸屏幕上的任何位置,它将返回true:Android Unity2d机器人检测触摸,android,unity3d,2d,Android,Unity3d,2d,如何在unity for android的按钮上检测触摸和长触摸? 我已经尝试过此功能,但如果我触摸屏幕上的任何位置,它将返回true: bool checkTouch() { for(int i = 0; i < Input.touchCount; i++) { TouchPhase tp = Input.GetTouch(i).phase; if(tp == TouchPhase.Began || tp
bool checkTouch()
{
for(int i = 0; i < Input.touchCount; i++)
{
TouchPhase tp = Input.GetTouch(i).phase;
if(tp == TouchPhase.Began || tp == TouchPhase.Ended || tp == TouchPhase.Stationary)
return true;
}
return false;
}
bool checkTouch()
{
对于(int i=0;i
实现按钮的一种方法是创建自己的按钮,实现必要的界面,如ipointerndownhandler、ipointernuphandler
通过这种方式,您可以管理按钮的操作方式,下面是一个示例:
using UnityEngine;
using UnityEngine.EventSystems;
public class LongClickButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
private bool pointerDown;
private float pointerDownTimer;
[SerializeField]
private float requiredHoldTime;
public void OnPointerDown(PointerEventData eventData)
{
pointerDown = true;
Debug.Log("OnPointerDown");
}
public void OnPointerUp(PointerEventData eventData)
{
Reset();
Debug.Log("OnPointerUp");
}
private void Update()
{
if (pointerDown)
{
pointerDownTimer += Time.deltaTime;
if (pointerDownTimer >= requiredHoldTime)
{
//do your LongClick stuff
Debug.Log("LongClick");
Reset();
}
}
}
private void Reset()
{
pointerDown = false;
pointerDownTimer = 0;
}
}
请记住将脚本附加到一个可交互的游戏对象上,就像一个图像(tp==TouchPhase.Start | | | tp==TouchPhase.End | | tp==TouchPhase.Stational)一样。把你的逻辑放在不同的状态,就是这样。如果需要按钮,请使用UnityEngine.UI在其中添加GUI画布和按钮。只需按按钮运行无需脚本您在哪里调用checkTouch?@Lotan在脚本中位于按钮GameObjectButtons上,默认情况下与单击和输入触摸一起工作。如果您添加了一个类似MyButtongamObject.GetComponent().onClick.AddListener(()=>{Debug.Log(“Click”);}的侦听器,请选中它@洛坦我需要注册长触摸,而不仅仅是点击