lyh916

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  201 随笔 :: 0 文章 :: 12 评论 :: 21万 阅读

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(系统取消跟踪触摸,如用户把屏幕放到他脸上或超过五个接触同时发生(个数根据平台而定)。这是一个触摸的最后状态)

 

二.测试

代码如下:

复制代码
 1 using System.Collections.Generic;
 2 using UnityEngine;
 3 
 4 public class TestTouch : MonoBehaviour {
 5 
 6     private string touchesStr;//当前记录
 7     private List<string> logList = new List<string>();//历史记录
 8     private Vector2 scrollPosition = Vector2.zero;
 9 
10     private void Update()
11     {
12         Touch[] touches = Input.touches;
13         touchesStr = string.Format("Input.touches({0}):", touches.Length);
14 
15         for (int i = 0; i < touches.Length; i++)
16         {
17             Touch touch = touches[i];
18             string pos = touch.position.ToString();
19             string phase = touch.phase.ToString();
20             string content = string.Format("{0},{1}", pos, phase);
21             touchesStr = touchesStr + content;
22         }
23 
24         if (touches.Length > 0)
25         {
26             AddLog(touchesStr);
27         }
28     }
29 
30     private void OnGUI()
31     {
32         GUILayout.Label(touchesStr);
33 
34         scrollPosition = GUILayout.BeginScrollView(scrollPosition, true, true, GUILayout.Width(Screen.width), GUILayout.Height(Screen.height / 2));
35         for (int i = 0; i < logList.Count; i++)
36         {
37             GUILayout.Label(logList[i]);
38         }
39         GUILayout.EndScrollView();
40 
41         if (GUILayout.Button("清除log"))
42         {
43             ClearLog();
44         }
45     }
46 
47     void AddLog(string str)
48     {
49         logList.Add(str);
50     }
51 
52     void ClearLog()
53     {
54         logList = new List<string>();
55     }
56 }
复制代码

 

1.点击

2.拖拽

posted on   艰苦奋斗中  阅读(603)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示