unity手勢插件《FingerGestures 》使用入門


什么是FingerGestures?

FingerGestures是Unity上,非常熱門的一款用於處理用戶輸入的插件

為什么要使用FingerGestures?

1:它統一了鼠標點擊和用戶觸摸的輸入模型。使得我們可以在UnityEditor里面就可以方便地進行觸摸測試(而不必發布到機器上)

2:它提供了豐富的觸摸、手勢事件支持

3:使用符合KISS原則,不需要復雜的配置,即可實現功能

4:這個吊了:允許用戶自定義手勢觸發圖案(無盡之劍的手勢觸發技能,用它輕松實現)

 

相信你已經迫不及待開始這段傳奇之旅了。下面通過一個簡單Tap(點擊)事件的例子:觸摸屏幕上的物體,輸出碰撞的物體名稱和碰撞點;

OK,讓我們開始了解這個神器

入門

1:導入FingerGestures的Unity安裝包,默認位置在Plugins/FingerGestures/目錄下

2:創建一個場景,將FingerGestures這個prefab拖進場景

3:創建一個空的GameObject(也可以用現有的),我們需要將觸摸的腳本掛載到這個上面

4:點擊該GameObject的屬性窗口,在彈出的窗口選擇FingerGestures,然后依次在如下兩個選項下,找到Tap Recognizer 和Screen RayCaster

5:將你場景里面的Camera的Tag設置成MainCamera(推薦)

   或者你需要告訴FingerGestures,那個Camera才是它需要的(不推薦,個人測試,遇到碰撞優先級錯誤的問題)

   設置Tag法:

    

   或者手動指定法:

   找到第4步驟添加的Screen RayCaster組件,指定相機

   

6:編寫測試代碼

FingerGestures里面方法傳遞有兩種方式

1:使用c# 代理方式(推薦,性能好)

2:類似Unity的SendMessage()廣播方式(方便,性能略低)

 

第1種代理法:創建一個腳本,黏貼下面的代碼,掛載到第三步驟創建的GameObject就好了

using UnityEngine;

[RequireComponent(typeof(TapRecognizer))]
public class InputHelper : MonoBehaviour
{
        // Use this for initialization
        void Start ()
        {
                TapRecognizer tapRecognizer = GetComponent<TapRecognizer> ();
                tapRecognizer.OnGesture += Tap_Gesture;

        }
    void Tap_Gesture (TapGesture e)
        {
                GameObject hittedObject = e.Selection;
            
                if (null != hittedObject) {
                        
                        Vector3 hitPos3d = e.Raycast.Hit3D.point;
                        Debug.Log (hittedObject.name + " pos:" + hitPos3d);
                        
                } else {
                        
                }
        }
}

 

第二種廣播法:

1:設置Tap Recognizer,如下把我們第三部創建的GameObject拖放到MessageTarget上

2:代碼:

去掉第一種代理法里Start()方法,就可以了

 

總結:

1:本文中推薦的步驟或者少配置、或者性能好,請使用的時候傾向於這些方式。

2:要碰撞的物體請設置一個Collider,在Component的Physics目錄下。

3:添加的兩個組件的作用:

Tap Recognizer:觸摸事件識別類

Screen RayCaster:物體被碰撞的時候,需要知道這道光線從哪里過來(和攝像頭的方向一致)

 

 


免責聲明!

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



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