Unity插件EasyTouch学习记录

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.         Camera.main.transform.position = 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.         Vector3 vec = 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.             transform.position = ges.GetTouchToWorldPoint(10);//相机z=-10 cube 0  
  67.         }  
  68.     }  
  69.   
  70.     /// <summary>  
  71.     /// 双指滑动 平面移动相机  
  72.     /// </summary>  
  73.     /// <param name="ges"></param>  
  74.     void On_Swipe2Fingers(Gesture ges) {  
  75.         Camera.main.transform.Translate(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.         Camera.main.transform.Translate(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没有什么冲突。更多的功能只有在实际使用中去研究了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值