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


(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可以選


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM