欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

unity_EasyTouch

程序员文章站 2022-06-25 16:16:11
目录导入EasyTouch5EasyTouch4.x的使用编辑脚本导入EasyTouch5导入之后可能会有一个行尾对齐的警告,点击警告用vs或其他编辑器打开,确定,保存即可。EasyTouch4.x的使用如果要使用EasyTouch的功能,那必须先在场景中创建一个EasyTouch的游戏物体,这样那些基于EasyTouch的脚本才能生效。创建空物体创建脚本编辑脚本脚本使用EasyTouch的命名空间订阅事件结果......


一、导入EasyTouch5

unity_EasyTouch

unity_EasyTouch
unity_EasyTouch

导入之后可能会有一个行尾对齐的警告,点击警告用vs或其他编辑器打开,确定,保存即可。
unity_EasyTouch

unity_EasyTouch


二、EasyTouch4.x的用法

unity_EasyTouch

1、游戏物体

新建场景EasyTouch4_xDemo
unity_EasyTouch

如果要使用EasyTouch的功能,那必须先在场景中创建一个EasyTouch的游戏物体,这样那些基于EasyTouch的脚本才能生效。
unity_EasyTouch


这就是游戏物体
unity_EasyTouch


创建空物体挂接C#脚本
unity_EasyTouch
创建C#脚本unity_EasyTouch


2、编辑脚本

脚本使用EasyTouch的命名空间
unity_EasyTouch

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与OnDestro中取消订阅EasyTouch中对应的事件
    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;
    }

    //------------------------------------//
    void OnTouchStart(Gesture gesture)
    {
        Debug.Log("touch start");
        Debug.Log("StartPosition" + gesture.startPosition);
    }

    void OnTouchEnd(Gesture gesture)
    {
        Debug.Log("touch end,time:");
        Debug.Log("ActionTime" + gesture.actionTime);
    }

    void OnSwipe(Gesture gesture)
    {
        Debug.Log("swipt screen");
        Debug.Log("Type" + gesture.swipe);
    }
}


3、最后一步

unity_EasyTouch

4、结果

unity_EasyTouch


三、EasyTouch5.x的用法

1、场景、游戏物体、脚本

前面操作和EasyTouch4.x基本一样

新建场景EasyTouch5_xDemo
新建脚本EasyTouch5_xDemo
新建空物体,挂架脚本EasyTouch5_xDemo
unity_EasyTouch打开脚本,引入命名空间 using HedgehogTeam.EasyTouch;


2、编写脚本EasyTouch5_xDemo.cs

unity_EasyTouch

unity_EasyTouch

unity_EasyTouch


报错。没有进行操作的时候EasyTouch.current会返回空
unity_EasyTouch
所以下面报错的位置是12行
unity_EasyTouch
unity_EasyTouch

修改程序
unity_EasyTouch


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HedgehogTeam.EasyTouch;

public class EasyTouch5_xDemo : MonoBehaviour {

    private void Update()
    {
        Gesture currentGesture = EasyTouch.current;

        if (currentGesture != null && currentGesture.type == EasyTouch.EvtType.On_TouchStart)
        {
            Debug.Log("touch start");
            Debug.Log("StartPosition" + currentGesture.startPosition);
        }
        if (currentGesture != null && currentGesture.type == EasyTouch.EvtType.On_TouchUp)
        {
            OnTouchEnd(currentGesture);
        }
        if (currentGesture != null && currentGesture.type == EasyTouch.EvtType.On_Swipe)
        {
            OnSwipe(currentGesture);
        }
    }

    //------------------------------------//
    void OnTouchEnd(Gesture gesture)
    {
        Debug.Log("touch end,time:");
        Debug.Log("ActionTime" + gesture.actionTime);
    }

    void OnSwipe(Gesture gesture)
    {
        Debug.Log("swipt screen");
        Debug.Log("Type" + gesture.swipe);
    }
}


3、结果

unity_EasyTouch


4、5代版本新特性

EasyTouch5_x可以不用专门添加EasyTouch,运行时会自动添加,停止就会消失。4代版本没有这个特性
unity_EasyTouch
但由于四代中没有这个功能,所以建议不论用哪个,最好自己手动添加。


四、QuickGesture

1、Quick Drag

新建场景QuickGestureDemo
新建脚本QuickGestureDemo
新建空物体ScriptHolder
新建3D物体Cube,命名为TestCube

TestCube添加可视化脚本
unity_EasyTouch

新建C#脚本QuickGestureDemo




将脚本挂接在ScriptHolder
打开TestCube,添加三个函数。函数打印0、1、2,分别表示拖拽开始、拖拽中、拖拽介绍。
unity_EasyTouch
unity_EasyTouch


结果
unity_EasyTouch


2、Quick Enter Over Exit

进入物体,在物体中,离开物体。分别打印3、4、5。
unity_EasyTouch

unity_EasyTouch

unity_EasyTouch


3、Quick LongTap

长按物体触发,长按开始、长按中、长按结束。分别打印7、8、9。
unity_EasyTouch

unity_EasyTouch

unity_EasyTouch


4、Quick Pinch

缩放
unity_EasyTouch
EasyTouch可以让鼠标模拟两指,点击左键不放同时按下ctrl出现第二指。松开之后第二次按下Alt键以第一次的第二指为中心模拟两指。

勾选Gesture over me表示必须在物体上进行操作才能起作用。
unity_EasyTouch


5、Quick Swipe

通过滑屏旋转物体

unity_EasyTouch


6、Quick Tab

鼠标单击物体打印11
unity_EasyTouch

鼠标双击物体打印12

unity_EasyTouch


7、Quick Touch

触摸开始、触摸中、触摸结束。分别打印14、15、16、17。

unity_EasyTouch
在物体内结束触摸打印16
unity_EasyTouch
在物体外结束触摸打印17

unity_EasyTouch


7、Quick Twist

两指旋转物体
unity_EasyTouch


8、注意

8.1、Box Collider

如果与物体接触,一定要勾选Box Collider,除了Quick PinchQuick Twist不勾选Gesture over me
unity_EasyTouch


8.2、相机正交和透视的区别

unity_EasyTouch


五、Trigger

新建场景EasyTouchTriggerDemo
新建脚本EasyTouchTriggerDemo
在Hierarchy添加EasyTouch
新建3个3D物体Cube,命名为Cube1、Cube2、Cube3
在Cube上添加组件Easy Touch Trigger

unity_EasyTouch

脚本EasyTouchTriggerDemo


using UnityEngine;

public class EasyTouchTriggerDemo : MonoBehaviour {

    public void PrintMsg(GameObject go)
    {
        if (go == null)
        {
            Debug.Log("null");
        }
        else
        {
            Debug.Log(go.name);
        }
    }

    public void PrintOK()
    {
        Debug.Log("ok");
    }

    public void PrintOK2()
    {
        Debug.Log("ok2");
    }
}

1、Only if on me

只有点击物体本体才会触发
点击Cube3触发,设置如下
unity_EasyTouch

unity_EasyTouch


2、All the tiem, or other object

选中All the tiem, or other object后,
可以指定触发物体,只有点击指定触发的物体才会响应事件。
也可以不指定,不指定就是在任何地方都可触发。
unity_EasyTouch


3、搭配使用

搭配使用,需要点击本地就选择Only if on me ,在其他地方都可以触发就选择All the tiem, or other object


4、指定响应物体

以上三种都是本物体响应,或者不指定物体响应(场景任何地方响应)

选择Other receiver后,还可以指定其他响应物体
unity_EasyTouch
还可以触发指定触发物体身上挂接的脚本的方法
unity_EasyTouch
举例
Other receiver(接受者)为Cube2,点击Cube3其实是Cube2响应,并且是Cube2自己的方法,打印ok2
unity_EasyTouch

5、总结

指定触发者
Only if on me 点击自己触发
All the tiem, or other object 点击其他 任何物体 触发

指定接受者
Other receiver 指定某个物体响应


本文地址:https://blog.csdn.net/ssc_zcys/article/details/107855138

相关标签: Unity 游戏 c#