Skip to main content
VRCHINA
AR论坛
 首页 » 资源教程 » Unity3D教程

unity ios开发--FingerGestures插件使用

2016年09月05日 17:27:326850

Unity中的一个手势操作的插件FingerGestures。它能很方便监听到Unity中的各种手势事件:上下左右四方向的滑动事件、按下事件、抬起事件、移动事件、连击事件、长按事件等等。它同时支持触摸屏操作与鼠标操作,总起来说使用起来还是比较方便的。

 

[csharp] view plain copy
  1. using UnityEngine;  

  2. using System.Collections;  

  3.   

  4. public class FingerEvent1 : MonoBehaviour  

  5. {  

  6.   

  7.     void OnEnable()  

  8.     {  

  9.         //启动时调用,这里开始注册手势操作的事件。  

  10.   

  11.         //按下事件: OnFingerDown就是按下事件监听的方法,这个名子可以由你来自定义。方法只能在本类中监听。下面所有的事件都一样!!!  

  12.         FingerGestures.OnFingerDown += OnFingerDown;  

  13.         //抬起事件  

  14.         FingerGestures.OnFingerUp += OnFingerUp;  

  15.         //开始拖动事件  

  16.         FingerGestures.OnFingerDragBegin += OnFingerDragBegin;  

  17.         //拖动中事件...  

  18.         FingerGestures.OnFingerDragMove += OnFingerDragMove;  

  19.         //拖动结束事件  

  20.         FingerGestures.OnFingerDragEnd += OnFingerDragEnd;  

  21.         //上、下、左、右、四个方向的手势滑动  

  22.         FingerGestures.OnFingerSwipe += OnFingerSwipe;  

  23.         //连击事件 连续点击事件  

  24.         FingerGestures.OnFingerTap += OnFingerTap;  

  25.         //手指触摸屏幕中事件调用一下三个方法  

  26.         FingerGestures.OnFingerStationaryBegin += OnFingerStationaryBegin;  

  27.         FingerGestures.OnFingerStationary += OnFingerStationary;  

  28.         FingerGestures.OnFingerStationaryEnd += OnFingerStationaryEnd;  

  29.         //长按事件  

  30.         FingerGestures.OnFingerLongPress += OnFingerLongPress;  

  31.   

  32.     }  

  33.   

  34.     void OnDisable()  

  35.     {  

  36.         //关闭时调用,这里销毁手势操作的事件  

  37.         //和上面一样  

  38.         FingerGestures.OnFingerDown -= OnFingerDown;  

  39.         FingerGestures.OnFingerUp -= OnFingerUp;  

  40.         FingerGestures.OnFingerDragBegin -= OnFingerDragBegin;  

  41.         FingerGestures.OnFingerDragMove -= OnFingerDragMove;  

  42.         FingerGestures.OnFingerDragEnd -= OnFingerDragEnd;  

  43.         FingerGestures.OnFingerSwipe -= OnFingerSwipe;  

  44.         FingerGestures.OnFingerTap -= OnFingerTap;  

  45.         FingerGestures.OnFingerStationaryBegin -= OnFingerStationaryBegin;  

  46.         FingerGestures.OnFingerStationary -= OnFingerStationary;  

  47.         FingerGestures.OnFingerStationaryEnd -= OnFingerStationaryEnd;  

  48.         FingerGestures.OnFingerLongPress -= OnFingerLongPress;  

  49.     }  

  50.   

  51.     //按下时调用  

  52.     void OnFingerDown(int fingerIndex, Vector2 fingerPos)  

  53.     {  

  54.         //int fingerIndex 是手指的ID 第一按下的手指就是 0 第二个按下的手指就是1。。。一次类推。  

  55.         //Vector2 fingerPos 手指按下屏幕中的2D坐标  

  56.   

  57.         //将2D坐标转换成3D坐标  

  58.         transform.position = GetWorldPos(fingerPos);  

  59.         Debug.Log(" OnFingerDown =" + fingerPos);  

  60.     }  

  61.   

  62.     //抬起时调用  

  63.     void OnFingerUp(int fingerIndex, Vector2 fingerPos, float timeHeldDown)  

  64.     {  

  65.   

  66.         Debug.Log(" OnFingerUp =" + fingerPos);  

  67.     }  

  68.   

  69.     //开始滑动  

  70.     void OnFingerDragBegin(int fingerIndex, Vector2 fingerPos, Vector2 startPos)  

  71.     {  

  72.         Debug.Log("OnFingerDragBegin fingerIndex =" + fingerIndex + " fingerPos =" + fingerPos + "startPos =" + startPos);  

  73.     }  

  74.     //滑动结束  

  75.     void OnFingerDragEnd(int fingerIndex, Vector2 fingerPos)  

  76.     {  

  77.   

  78.         Debug.Log("OnFingerDragEnd fingerIndex =" + fingerIndex + " fingerPos =" + fingerPos);  

  79.     }  

  80.     //滑动中  

  81.     void OnFingerDragMove(int fingerIndex, Vector2 fingerPos, Vector2 delta)  

  82.     {  

  83.         transform.position = GetWorldPos(fingerPos);  

  84.         Debug.Log(" OnFingerDragMove =" + fingerPos);  

  85.   

  86.     }  

  87.     //上下左右四方方向滑动手势操作  

  88.     void OnFingerSwipe(int fingerIndex, Vector2 startPos, FingerGestures.SwipeDirection direction, float velocity)  

  89.     {  

  90.         //结果是 Up Down Left Right 四个方向  

  91.         Debug.Log("OnFingerSwipe " + direction + " with finger " + fingerIndex);  

  92.   

  93.     }  

  94.   

  95.     //连续按下事件, tapCount就是当前连续按下几次  

  96.     void OnFingerTap(int fingerIndex, Vector2 fingerPos, int tapCount)  

  97.     {  

  98.   

  99.         Debug.Log("OnFingerTap " + tapCount + " times with finger " + fingerIndex);  

  100.   

  101.     }  

  102.   

  103.     //按下事件开始后调用,包括 开始 结束 持续中状态只到下次事件开始!  

  104.     // OnFingerStationary 事件和  OnFingerDragMove 有一个区别。  

  105.     //OnFingerStationary 是手指触摸在屏幕中的事件,而OnFingerDragMove是先触摸一下然后滑动的事件。  

  106.     //如果你需要时时捕获手指触摸屏幕中的事件时 用OnFingerStationary 即可  

  107.     void OnFingerStationaryBegin(int fingerIndex, Vector2 fingerPos)  

  108.     {  

  109.   

  110.         Debug.Log("OnFingerStationaryBegin " + fingerPos + " times with finger " + fingerIndex);  

  111.     }  

  112.   

  113.     void OnFingerStationary(int fingerIndex, Vector2 fingerPos, float elapsedTime)  

  114.     {  

  115.   

  116.         Debug.Log("OnFingerStationary " + fingerPos + " times with finger " + fingerIndex);  

  117.   

  118.     }  

  119.   

  120.     void OnFingerStationaryEnd(int fingerIndex, Vector2 fingerPos, float elapsedTime)  

  121.     {  

  122.   

  123.         Debug.Log("OnFingerStationaryEnd " + fingerPos + " times with finger " + fingerIndex);  

  124.     }  

  125.   

  126.     //长按事件  

  127.     void OnFingerLongPress(int fingerIndex, Vector2 fingerPos)  

  128.     {  

  129.   

  130.         Debug.Log("OnFingerLongPress " + fingerPos);  

  131.     }  

  132.   

  133.     //把Unity屏幕坐标换算成3D坐标  

  134.     Vector3 GetWorldPos(Vector2 screenPos)  

  135.     {  

  136.         Camera mainCamera = Camera.main;  

  137.         return mainCamera.ScreenToWorldPoint(new Vector3(screenPos.x, screenPos.y, Mathf.Abs(transform.position.z - mainCamera.transform.position.z)));  

  138.     }  

  139. }  

unity ios开发--FingerGestures插件使用 Unity3D教程 第1张

unity ios开发--FingerGestures插件使用 Unity3D教程 第2张

这样把上面的代码付给cube,运行就可以了。


评论列表暂无评论
发表评论