• EasyTouch5插件使用 EasyTouch手势检测功能


    (1)导入EasyTouch5插件,注意该插件对Unity有版本要求

    (2)首先在场景中创建一个EasyTouch,这个是必需的,它是进行检测的核心组件,场景中有任何物体使用了EasyTouch的东西都要加载它

    (3) 首先看一下在4.x中的写法(指这个插件的4代)

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using HedgehogTeam.EasyTouch;
    public class EasyTouch4_xDemo : MonoBehaviour {
    
        // 在OnEnable中订阅EasyTouch中的事件
        private void OnEnable()
        {
            EasyTouch.On_TouchStart += OnTouchStart;
            EasyTouch.On_TouchUp += OnTouchEnd;
            EasyTouch.On_Swipe += OnSwipe;
        }
        // 在OnDisable和OnDestroy中取消订阅OnEnable中对应的事件
        private void OnDisable()
        {
            EasyTouch.On_TouchStart -= OnTouchStart;
            EasyTouch.On_TouchUp -= OnTouchEnd;
            EasyTouch.On_Swipe -= OnSwipe;
        }
    
        private void OnDestroy()
        {
            EasyTouch.On_TouchStart -= OnTouchStart;
            EasyTouch.On_TouchUp -= OnTouchEnd;
            EasyTouch.On_Swipe -= OnSwipe;
        }
    
        // Gesture是EaayTouch定义的类,在屏幕上的所有操作都是Gesture
        // 如果我们定义的方法需要EasyTouch帮我们调用,需要加上这个形参
        void OnTouchStart(Gesture gesture)
        {
            Debug.Log("OnTouchStart");
            Debug.Log("startPosition" + gesture.startPosition);
        }
    
        void OnTouchEnd(Gesture gesture)
        {
            Debug.Log("OnTouchEnd");
            Debug.Log("actionTime" + gesture.actionTime);
        }
    
        void OnSwipe(Gesture gesture)
        {
            Debug.Log("OnSwipe");
            Debug.Log("swipe" + gesture.swipe);
        }
    }
    

    上面我们自己定义了3个方法(OnTouchStart、OnTouchEnd、OnSwipe),参数使用了Gesture,然后在当前脚本开始及结束的时候,把我们定义的3个方法注册进EasyTouch的内部方法(EasyTouch.On_TouchStart、EasyTouch.On_TouchUp、EasyTouch.On_Swipe)中,这样当我们在屏幕上触发事件的时候,我们挂在场景中的EasyTouch核心组件会检测到并执行相关函数。具体的内部方法不用管,这里只是做个演示。

    运行:

    (4) 首先看一下在5.x中的写法,推荐使用这种

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using HedgehogTeam.EasyTouch;
    
    public class EasyTouch5_xDemo : MonoBehaviour {
    
        void Update()
        {
            // EasyTouch5.x版本中的新特性可以不用书写订阅事件等一套语句
            // 通过EasyTouch.current来获取当前玩家输入的手势
            Gesture currentGesture = EasyTouch.current;
            if(currentGesture != null && EasyTouch.EvtType.On_TouchStart == currentGesture.type)
            {
                // 写法1:直接在update里写游戏逻辑
                Debug.Log("OnTouchStart");
                Debug.Log("startPosition" + currentGesture.startPosition);
            }
            if(currentGesture != null && EasyTouch.EvtType.On_TouchUp == currentGesture.type)
            {
                // 写法2:将游戏逻辑放在单独的函数
                OnTouchEnd(currentGesture);
            }
            if(currentGesture != null && EasyTouch.EvtType.On_Swipe == currentGesture.type)
            {
                OnSwipe(currentGesture);
            }
        }
    
    
        // Gesture是EaayTouch定义的类,在屏幕上的所有操作都是Gesture
        // 如果我们定义的方法需要EasyTouch帮我们调用,需要加上这个形参
        void OnTouchEnd(Gesture gesture)
        {
            Debug.Log("OnTouchEnd");
            Debug.Log("actionTime" + gesture.actionTime);
        }
    
        void OnSwipe(Gesture gesture)
        {
            Debug.Log("OnSwipe");
            Debug.Log("swipe" + gesture.swipe);
        }
    }
    

    (5)新特性之QucikGesture

    除了上面两种方法,该插件还给我们提供了方便的功能,可以在需要检测的物体上添加EasyTouch的一系列组件来检测

    它可以添加如下新特性:拖动,触摸,长按,缩放,滑动,单双击,旋转

    注意:在测试中需要使用两根手指的地方,先按Ctrl键预设置一个点A,A点为中点。然后测试的时候按住Alt键移动控制,会在鼠标点生成一个点B,以A为中心生成另一个点C,B和C就代表两根手指。

    在EasyTouch5.0.17版本中,Quick Pinch的End事件是无法触发的,On_PinchEnd与On_TwistEnd的触发重合了,且会一直触发On_TwistEnd,这是这个版本的缺陷。

    (6)新特性之EasyTouchTrigger

    上面还有一个Trigger可以选

  • 相关阅读:
    软件开的目录规范+sys,os,time模块
    模块与包
    匿名函数+函数递归+二分法+面向过程编程
    快捷键
    补充叠加多个装饰器:加载顺序与执行顺序+迭代器+自定义迭代器的方式:生成器+三元表达式
    闭包函数的应用+内置函数
    函数对象+函数嵌套+名称空间与作用域+闭包函数
    SP15637 Mr Youngs Picture Permutations 高维动态规划
    LG3825/BZOJ4945/LOJ2305 「NOI2017」游戏 dfs+2-SAT
    LG1198/BZOJ1012 「JSOI2008」最大数 线段树+离线
  • 原文地址:https://www.cnblogs.com/lmx282110xxx/p/10798663.html
Copyright © 2020-2023  润新知