分類:Unity、C#、VS2015 spa
建立日期:2016-04-21 code
在iOS和Android系統中,操做都是經過觸摸來完成的。Input類中對觸摸操做的方法或變量以下圖所示: orm
經過GetTouch或者touches能夠訪問移動沒備的觸摸數據,數據保存在Touch的結構體中。下圖是Touch的結構體變量:blog
一、示例1(遍歷全部Touch並輸出Touch的信息) get
void OnGUI() string
{ it
//遍歷全部Touch io
foreach(Touch touch in Input.touches) form
{ class
//輸出Touch信息
GUILayout.Label(string.Format("手指:{0} 狀態:{1} 位置:{2}",touch.fingerId,touch.phase.ToString(),touch.position));
}
}
二、示例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(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的截圖相同。