[Unity移动端]Touch类

Touch类的信息只能在移动端(触摸屏)上能够获取,在编辑器上是不能获取到的。因此,为了方便测试,可以打包apk后在模拟器上跑:

unity打包apk:https://www.jianshu.com/p/3c67fbfbb67c

一.常用api

1.Input.touches:返回上一帧中所有的触摸信息。每一条触摸信息代表着一只手指在屏幕上的触碰状态。因为是一帧的触摸信息,所以建议在Update中调用。长度为1时,表示1只手指在屏幕上,如此类推。

2.Input.GetTouch:返回指定的一条触摸信息。一般传0,表示返回第一条触摸信息,即在屏幕上的第一只手指的触摸信息。

3.TouchPhase:触摸状态。其取值为:Began(手指开始触摸屏幕)、Moved(手指在屏幕上移动)、Stationary(手指触摸屏幕,但并没有移动)、Ended(手指从屏幕上移开。这是一个触摸的最后状态)、Canceled(系统取消跟踪触摸,如用户把屏幕放到他脸上或超过五个接触同时发生(个数根据平台而定)。这是一个触摸的最后状态)

二.测试

代码如下:

 using System.Collections.Generic;
using UnityEngine; public class TestTouch : MonoBehaviour { private string touchesStr;//当前记录
private List<string> logList = new List<string>();//历史记录
private Vector2 scrollPosition = Vector2.zero; private void Update()
{
Touch[] touches = Input.touches;
touchesStr = string.Format("Input.touches({0}):", touches.Length); for (int i = ; i < touches.Length; i++)
{
Touch touch = touches[i];
string pos = touch.position.ToString();
string phase = touch.phase.ToString();
string content = string.Format("{0},{1}", pos, phase);
touchesStr = touchesStr + content;
} if (touches.Length > )
{
AddLog(touchesStr);
}
} private void OnGUI()
{
GUILayout.Label(touchesStr); scrollPosition = GUILayout.BeginScrollView(scrollPosition, true, true, GUILayout.Width(Screen.width), GUILayout.Height(Screen.height / ));
for (int i = ; i < logList.Count; i++)
{
GUILayout.Label(logList[i]);
}
GUILayout.EndScrollView(); if (GUILayout.Button("清除log"))
{
ClearLog();
}
} void AddLog(string str)
{
logList.Add(str);
} void ClearLog()
{
logList = new List<string>();
}
}

1.点击

[Unity移动端]Touch类

2.拖拽

[Unity移动端]Touch类

上一篇:Anton and Making Potions


下一篇:curl常用命令备忘