Unity插件EasyTouch学习记录
今天抽时间看了看EasyTouch,是一款非常强大的解决移动端触摸事件的插件。
上一次用它还是在15年在培训机构做项目孵化的时候,我依稀记得那是一个失败的项目,锅不在我,就不回忆了。
首先是在论坛搜一搜,然后花论坛币下载了一个,然后导入。
导入后的目录,EasyTouch应该指的是基本的手势功能,easytouch controls里面有摇杆、Dpad、按钮之类封装好的实用功能。Install里面还有一个playermaker的安装包。
文档案例都很齐全,可以快速上手。
我看了看文档里的quick start,决定做一个简易的demo,我只在场景里放一个cube,当我用一根手指在屏幕上滑动的时候,我需要cube旋转;当我对它拖拽时,需要它跟着手指移动;当我用两根手指滑动时相机平面移动;当我双指向内捏或者向外拉时相机拉近或远。
1.首先添加 easytouch游戏对象,它本身有许多设置选项,我大概过了一下,然后,啥也没记住。
这个简易demo里也不需要修改什么。
2.创建cube
3.创建脚本,并挂给cube
4.编写脚本
这是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
- Debug.Log(ETCInput.GetAxis("Horizontal")+","+ ETCInput.GetAxis("Vertical"));
easytouch真的十分强大方便易上手,并且跟UGUI没有什么冲突。更多的功能只有在实际使用中去研究了。
今天抽时间看了看EasyTouch,是一款非常强大的解决移动端触摸事件的插件。
上一次用它还是在15年在培训机构做项目孵化的时候,我依稀记得那是一个失败的项目,锅不在我,就不回忆了。
首先是在论坛搜一搜,然后花论坛币下载了一个,然后导入。
导入后的目录,EasyTouch应该指的是基本的手势功能,easytouch controls里面有摇杆、Dpad、按钮之类封装好的实用功能。Install里面还有一个playermaker的安装包。
文档案例都很齐全,可以快速上手。
我看了看文档里的quick start,决定做一个简易的demo,我只在场景里放一个cube,当我用一根手指在屏幕上滑动的时候,我需要cube旋转;当我对它拖拽时,需要它跟着手指移动;当我用两根手指滑动时相机平面移动;当我双指向内捏或者向外拉时相机拉近或远。
1.首先添加 easytouch游戏对象,它本身有许多设置选项,我大概过了一下,然后,啥也没记住。
这个简易demo里也不需要修改什么。
2.创建cube
3.创建脚本,并挂给cube
4.编写脚本
这是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没有什么冲突。更多的功能只有在实际使用中去研究了。