EasyTouch5插件使用 EasyTouch手勢檢測功能

(1)導入EasyTouch5插件,注意該插件對Unity有版本要求函數

 

(2)首先在場景中建立一個EasyTouch,這個是必需的,它是進行檢測的核心組件,場景中有任何物體使用了EasyTouch的東西都要加載它測試

 

(3) 首先看一下在4.x中的寫法(指這個插件的4代)ui

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核心組件會檢測到並執行相關函數。具體的內部方法不用管,這裏只是作個演示。插件

運行:code

 

(4) 首先看一下在5.x中的寫法,推薦使用這種blog

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的一系列組件來檢測事件

它能夠添加以下新特性:拖動,觸摸,長按,縮放,滑動,單雙擊,旋轉ip

注意:在測試中須要使用兩根手指的地方,先按Ctrl鍵預設置一個點A,A點爲中點。而後測試的時候按住Alt鍵移動控制,會在鼠標點生成一個點B,以A爲中心生成另外一個點C,B和C就表明兩根手指。ci

在EasyTouch5.0.17版本中,Quick Pinch的End事件是沒法觸發的,On_PinchEnd與On_TwistEnd的觸發重合了,且會一直觸發On_TwistEnd,這是這個版本的缺陷。

 

(6)新特性之EasyTouchTrigger

上面還有一個Trigger能夠選

相關文章
相關標籤/搜索