Unity插件EasyTouch学习记录


今天抽时间看了看EasyTouch,是一款非常强大的解决移动端触摸事件的插件。

上一次用它还是在15年在培训机构做项目孵化的时候,我依稀记得那是一个失败的项目,锅不在我,就不回忆了。

首先是在论坛搜一搜,然后花论坛币下载了一个,然后导入。

unity3d 触摸 移动 unity 触摸插件_System


导入后的目录,EasyTouch应该指的是基本的手势功能,easytouch controls里面有摇杆、Dpad、按钮之类封装好的实用功能。Install里面还有一个playermaker的安装包。

文档案例都很齐全,可以快速上手。


我看了看文档里的quick start,决定做一个简易的demo,我只在场景里放一个cube,当我用一根手指在屏幕上滑动的时候,我需要cube旋转;当我对它拖拽时,需要它跟着手指移动;当我用两根手指滑动时相机平面移动;当我双指向内捏或者向外拉时相机拉近或远。

unity3d 触摸 移动 unity 触摸插件_拖拽_02


1.首先添加 easytouch游戏对象,它本身有许多设置选项,我大概过了一下,然后,啥也没记住。

这个简易demo里也不需要修改什么。

2.创建cube

3.创建脚本,并挂给cube

4.编写脚本

unity3d 触摸 移动 unity 触摸插件_拖拽_03

这是easytouch中订阅事件的方法,EasyTouch下定义了各种类型的事件,我们只需要编写相应处理方法,然后+=订阅。在OnEnable中订阅,在OnDisable和OnDestroy中取消订阅。方法要传一个Gesture类型的参数,包含了手势的数据。


我的EasyTouchTest




[csharp]  view plain  copy

1. using System.Collections;  
2. using System.Collections.Generic;  
3. using UnityEngine;  
4. using HedgehogTeam.EasyTouch;  
5. using UnityEngine.UI;  
6. public class EasyTouchTest : MonoBehaviour {  
7. public Button BtnReset;  
8. // Use this for initialization  
9. void Start () {  
10.           
11.     }  
12.       
13. // Update is called once per frame  
14. void Update () {  
15.           
16.     }  
17.   
18. void OnEnable() {  
19.         EasyTouch.On_Swipe += On_Swipe;  
20.         EasyTouch.On_Drag += On_Drag;  
21.         EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers;  
22.         EasyTouch.On_Pinch += On_Pinch;  
23.         BtnReset.onClick.AddListener(ResetScene);  
24.     }  
25.   
26. void OnDisable() {  
27.         EasyTouch.On_Swipe -= On_Swipe;  
28.         EasyTouch.On_Drag -= On_Drag;  
29.         EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;  
30.         EasyTouch.On_Pinch -= On_Pinch;  
31.         BtnReset.onClick.RemoveListener(ResetScene);  
32.     }  
33.   
34. void OnDestroy() {  
35.         EasyTouch.On_Swipe -= On_Swipe;  
36.         EasyTouch.On_Drag -= On_Drag;  
37.         EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;  
38.         EasyTouch.On_Pinch -= On_Pinch;  
39.         BtnReset.onClick.RemoveListener(ResetScene);  
40.     }  
41.   
42. /// <summary>  
43. /// 重置cube和相机  
44. /// </summary>  
45. void ResetScene() {  
46.         transform.position = Vector3.zero;  
47.         transform.rotation = Quaternion.Euler(Vector3.zero);  
48. new Vector3(0, 0, -10);  
49.     }  
50.   
51. /// <summary>  
52. /// 滑动使cube旋转  
53. /// </summary>  
54. /// <param name="ges"></param>  
55. void On_Swipe(Gesture ges) {  
56. new Vector3(ges.deltaPosition.y, ges.deltaPosition.x, 0);  
57.         transform.Rotate(vec ,Space.World);  
58.     }  
59.   
60. /// <summary>  
61. /// 拖拽移动cube  
62. /// </summary>  
63. /// <param name="ges"></param>  
64. void On_Drag(Gesture ges) {  
65. if (ges.pickedObject == gameObject) {  
66. //相机z=-10 cube 0  
67.         }  
68.     }  
69.   
70. /// <summary>  
71. /// 双指滑动 平面移动相机  
72. /// </summary>  
73. /// <param name="ges"></param>  
74. void On_Swipe2Fingers(Gesture ges) {  
75. new Vector3(-ges.deltaPosition.x, -ges.deltaPosition.y, 0));  
76.     }  
77.   
78. /// <summary>  
79. /// 拉近拉远相机  
80. /// </summary>  
81. /// <param name="ges"></param>  
82. void On_Pinch(Gesture ges) {  
83. new Vector3(0, 0, ges.deltaPinch));  
84.     }  
85. }

参数还需要调整,但之前的小目标是实现了,因为容易一下子就把我的小Cube弄不见了,我就添加了一个复位按钮。



摇杆

剩下的我比较感兴趣的也就是摇杆了,毕竟这个东西挺常用,而且,如果你说要让我自己从头做一个,我还是觉得挺懵逼的···

右键EasyTouchControls->Joystick创建一个摇杆

常用的设置可能也就是Type,决定了摇杆是动态的还是静态的,静态就是坐标固定,动态的话当手指离开屏幕,摇杆会消失,手触摸的时候在手指触摸的坐标生成摇杆。

设为动态时可以选择摇杆区域全屏,半屏,还可以自定义区域。

摇杆的值




[csharp]  view plain  copy




  1. Debug.Log(ETCInput.GetAxis("Horizontal")+","+ ETCInput.GetAxis("Vertical"));  





easytouch真的十分强大方便易上手,并且跟UGUI没有什么冲突。更多的功能只有在实际使用中去研究了。


今天抽时间看了看EasyTouch,是一款非常强大的解决移动端触摸事件的插件。

上一次用它还是在15年在培训机构做项目孵化的时候,我依稀记得那是一个失败的项目,锅不在我,就不回忆了。

首先是在论坛搜一搜,然后花论坛币下载了一个,然后导入。

unity3d 触摸 移动 unity 触摸插件_System


导入后的目录,EasyTouch应该指的是基本的手势功能,easytouch controls里面有摇杆、Dpad、按钮之类封装好的实用功能。Install里面还有一个playermaker的安装包。

文档案例都很齐全,可以快速上手。


我看了看文档里的quick start,决定做一个简易的demo,我只在场景里放一个cube,当我用一根手指在屏幕上滑动的时候,我需要cube旋转;当我对它拖拽时,需要它跟着手指移动;当我用两根手指滑动时相机平面移动;当我双指向内捏或者向外拉时相机拉近或远。

unity3d 触摸 移动 unity 触摸插件_拖拽_02


1.首先添加 easytouch游戏对象,它本身有许多设置选项,我大概过了一下,然后,啥也没记住。

这个简易demo里也不需要修改什么。

2.创建cube

3.创建脚本,并挂给cube

4.编写脚本

unity3d 触摸 移动 unity 触摸插件_拖拽_03

这是easytouch中订阅事件的方法,EasyTouch下定义了各种类型的事件,我们只需要编写相应处理方法,然后+=订阅。在OnEnable中订阅,在OnDisable和OnDestroy中取消订阅。方法要传一个Gesture类型的参数,包含了手势的数据。


我的EasyTouchTest




[csharp]  view plain  copy

1. using System.Collections;  
2. using System.Collections.Generic;  
3. using UnityEngine;  
4. using HedgehogTeam.EasyTouch;  
5. using UnityEngine.UI;  
6. public class EasyTouchTest : MonoBehaviour {  
7. public Button BtnReset;  
8. // Use this for initialization  
9. void Start () {  
10.           
11.     }  
12.       
13. // Update is called once per frame  
14. void Update () {  
15.           
16.     }  
17.   
18. void OnEnable() {  
19.         EasyTouch.On_Swipe += On_Swipe;  
20.         EasyTouch.On_Drag += On_Drag;  
21.         EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers;  
22.         EasyTouch.On_Pinch += On_Pinch;  
23.         BtnReset.onClick.AddListener(ResetScene);  
24.     }  
25.   
26. void OnDisable() {  
27.         EasyTouch.On_Swipe -= On_Swipe;  
28.         EasyTouch.On_Drag -= On_Drag;  
29.         EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;  
30.         EasyTouch.On_Pinch -= On_Pinch;  
31.         BtnReset.onClick.RemoveListener(ResetScene);  
32.     }  
33.   
34. void OnDestroy() {  
35.         EasyTouch.On_Swipe -= On_Swipe;  
36.         EasyTouch.On_Drag -= On_Drag;  
37.         EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;  
38.         EasyTouch.On_Pinch -= On_Pinch;  
39.         BtnReset.onClick.RemoveListener(ResetScene);  
40.     }  
41.   
42. /// <summary>  
43. /// 重置cube和相机  
44. /// </summary>  
45. void ResetScene() {  
46.         transform.position = Vector3.zero;  
47.         transform.rotation = Quaternion.Euler(Vector3.zero);  
48. new Vector3(0, 0, -10);  
49.     }  
50.   
51. /// <summary>  
52. /// 滑动使cube旋转  
53. /// </summary>  
54. /// <param name="ges"></param>  
55. void On_Swipe(Gesture ges) {  
56. new Vector3(ges.deltaPosition.y, ges.deltaPosition.x, 0);  
57.         transform.Rotate(vec ,Space.World);  
58.     }  
59.   
60. /// <summary>  
61. /// 拖拽移动cube  
62. /// </summary>  
63. /// <param name="ges"></param>  
64. void On_Drag(Gesture ges) {  
65. if (ges.pickedObject == gameObject) {  
66. //相机z=-10 cube 0  
67.         }  
68.     }  
69.   
70. /// <summary>  
71. /// 双指滑动 平面移动相机  
72. /// </summary>  
73. /// <param name="ges"></param>  
74. void On_Swipe2Fingers(Gesture ges) {  
75. new Vector3(-ges.deltaPosition.x, -ges.deltaPosition.y, 0));  
76.     }  
77.   
78. /// <summary>  
79. /// 拉近拉远相机  
80. /// </summary>  
81. /// <param name="ges"></param>  
82. void On_Pinch(Gesture ges) {  
83. new Vector3(0, 0, ges.deltaPinch));  
84.     }  
85. }

 

参数还需要调整,但之前的小目标是实现了,因为容易一下子就把我的小Cube弄不见了,我就添加了一个复位按钮。



摇杆

剩下的我比较感兴趣的也就是摇杆了,毕竟这个东西挺常用,而且,如果你说要让我自己从头做一个,我还是觉得挺懵逼的···

右键EasyTouchControls->Joystick创建一个摇杆

常用的设置可能也就是Type,决定了摇杆是动态的还是静态的,静态就是坐标固定,动态的话当手指离开屏幕,摇杆会消失,手触摸的时候在手指触摸的坐标生成摇杆。

设为动态时可以选择摇杆区域全屏,半屏,还可以自定义区域。

摇杆的值




[csharp]  view plain  copy

1. Debug.Log(ETCInput.GetAxis("Horizontal")+","+ ETCInput.GetAxis("Vertical"));

easytouch真的十分强大方便易上手,并且跟UGUI没有什么冲突。更多的功能只有在实际使用中去研究了。