【Unity】7.5 移动设备输入
分类:Unity、C#、VS2015
创建日期:2016-04-21
一、简介
在iOS和Android系统中,操作都是通过触摸来完成的。Input类中对触摸操作的方法或变量如下图所示:
通过GetTouch或者touches可以访问移动没备的触摸数据,数据保存在Touch的结构体中。下图是Touch的结构体变量:
二、基本用法示例
1、示例1(遍历所有Touch并输出Touch的信息)
void OnGUI()
{
//遍历所有Touch
foreach(Touch touch in Input.touches)
{
//输出Touch信息
GUILayout.Label(string.Format("手指:{0} 状态:{1} 位置:{2}",touch.fingerId,touch.phase.ToString(),touch.position));
}
}
2、示例2(Demo5_2_MobileExample.unity)
该例子演示如何打印当前触摸屏幕的手指数量。
下面是MobileExample.cs文件中的代码:
using UnityEngine; using System.Collections; public class MobileExample : MonoBehaviour { //定义手指在触摸屏上的数量 public int fingerCount = 0; void Update() { foreach (var touch in Input.touches) { if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled) fingerCount++; } if (fingerCount > 0) print("用户有 " + fingerCount + " 手指触摸了屏幕"); } void OnGUI() { //输出手指在触摸屏上的数量至界面中 GUILayout.Label("手指数量:" + fingerCount); } }
运行预览效果:
3、示例3(Demo5_3_MobileMoveExample.unity)
该例子演示如何根据手指在屏幕上的滑动来移动物体。
MobileMoveExample.cs文件的代码如下:
using UnityEngine; using System.Collections; public class MobileMoveExample : MonoBehaviour { public float speed = 0.1f; void Update() { if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) { // 得到手指在这一帧的移动距离 Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition; // 在XY平面上移动物体 transform.Translate(-touchDeltaPosition.x * speed, -touchDeltaPosition.y * speed, 0); } } }
运行预览效果和示例2的截图相同。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步