(1)導入EasyTouch5插件,注意該插件對Unity有版本要求
(2)首先在場景中創建一個EasyTouch,這個是必需的,它是進行檢測的核心組件,場景中有任何物體使用了EasyTouch的東西都要加載它
(3) 首先看一下在4.x中的寫法(指這個插件的4代)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HedgehogTeam.EasyTouch;
public class EasyTouch4_xDemo : MonoBehaviour {
// 在OnEnable中訂閱EasyTouch中的事件
private void OnEnable()
{
EasyTouch.On_TouchStart += OnTouchStart;
EasyTouch.On_TouchUp += OnTouchEnd;
EasyTouch.On_Swipe += OnSwipe;
}
// 在OnDisable和OnDestroy中取消訂閱OnEnable中對應的事件
private void OnDisable()
{
EasyTouch.On_TouchStart -= OnTouchStart;
EasyTouch.On_TouchUp -= OnTouchEnd;
EasyTouch.On_Swipe -= OnSwipe;
}
private void OnDestroy()
{
EasyTouch.On_TouchStart -= OnTouchStart;
EasyTouch.On_TouchUp -= OnTouchEnd;
EasyTouch.On_Swipe -= OnSwipe;
}
// Gesture是EaayTouch定義的類,在屏幕上的所有操作都是Gesture
// 如果我們定義的方法需要EasyTouch幫我們調用,需要加上這個形參
void OnTouchStart(Gesture gesture)
{
Debug.Log("OnTouchStart");
Debug.Log("startPosition" + gesture.startPosition);
}
void OnTouchEnd(Gesture gesture)
{
Debug.Log("OnTouchEnd");
Debug.Log("actionTime" + gesture.actionTime);
}
void OnSwipe(Gesture gesture)
{
Debug.Log("OnSwipe");
Debug.Log("swipe" + gesture.swipe);
}
}
上面我們自己定義了3個方法(OnTouchStart、OnTouchEnd、OnSwipe),參數使用了Gesture,然后在當前腳本開始及結束的時候,把我們定義的3個方法注冊進EasyTouch的內部方法(EasyTouch.On_TouchStart、EasyTouch.On_TouchUp、EasyTouch.On_Swipe)中,這樣當我們在屏幕上觸發事件的時候,我們掛在場景中的EasyTouch核心組件會檢測到並執行相關函數。具體的內部方法不用管,這里只是做個演示。
運行:
(4) 首先看一下在5.x中的寫法,推薦使用這種
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HedgehogTeam.EasyTouch;
public class EasyTouch5_xDemo : MonoBehaviour {
void Update()
{
// EasyTouch5.x版本中的新特性可以不用書寫訂閱事件等一套語句
// 通過EasyTouch.current來獲取當前玩家輸入的手勢
Gesture currentGesture = EasyTouch.current;
if(currentGesture != null && EasyTouch.EvtType.On_TouchStart == currentGesture.type)
{
// 寫法1:直接在update里寫游戲邏輯
Debug.Log("OnTouchStart");
Debug.Log("startPosition" + currentGesture.startPosition);
}
if(currentGesture != null && EasyTouch.EvtType.On_TouchUp == currentGesture.type)
{
// 寫法2:將游戲邏輯放在單獨的函數
OnTouchEnd(currentGesture);
}
if(currentGesture != null && EasyTouch.EvtType.On_Swipe == currentGesture.type)
{
OnSwipe(currentGesture);
}
}
// Gesture是EaayTouch定義的類,在屏幕上的所有操作都是Gesture
// 如果我們定義的方法需要EasyTouch幫我們調用,需要加上這個形參
void OnTouchEnd(Gesture gesture)
{
Debug.Log("OnTouchEnd");
Debug.Log("actionTime" + gesture.actionTime);
}
void OnSwipe(Gesture gesture)
{
Debug.Log("OnSwipe");
Debug.Log("swipe" + gesture.swipe);
}
}
(5)新特性之QucikGesture
除了上面兩種方法,該插件還給我們提供了方便的功能,可以在需要檢測的物體上添加EasyTouch的一系列組件來檢測
它可以添加如下新特性:拖動,觸摸,長按,縮放,滑動,單雙擊,旋轉
注意:在測試中需要使用兩根手指的地方,先按Ctrl鍵預設置一個點A,A點為中點。然后測試的時候按住Alt鍵移動控制,會在鼠標點生成一個點B,以A為中心生成另一個點C,B和C就代表兩根手指。
在EasyTouch5.0.17版本中,Quick Pinch的End事件是無法觸發的,On_PinchEnd與On_TwistEnd的觸發重合了,且會一直觸發On_TwistEnd,這是這個版本的缺陷。
(6)新特性之EasyTouchTrigger
上面還有一個Trigger可以選