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
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using HedgehogTeam.EasyTouch;
- using UnityEngine.UI;
- public class EasyTouchTest : MonoBehaviour {
- public Button BtnReset;
- // Use this for initialization
- void Start () {
- }
- // Update is called once per frame
- void Update () {
- }
- void OnEnable() {
- EasyTouch.On_Swipe += On_Swipe;
- EasyTouch.On_Drag += On_Drag;
- EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers;
- EasyTouch.On_Pinch += On_Pinch;
- BtnReset.onClick.AddListener(ResetScene);
- }
- void OnDisable() {
- EasyTouch.On_Swipe -= On_Swipe;
- EasyTouch.On_Drag -= On_Drag;
- EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
- EasyTouch.On_Pinch -= On_Pinch;
- BtnReset.onClick.RemoveListener(ResetScene);
- }
- void OnDestroy() {
- EasyTouch.On_Swipe -= On_Swipe;
- EasyTouch.On_Drag -= On_Drag;
- EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
- EasyTouch.On_Pinch -= On_Pinch;
- BtnReset.onClick.RemoveListener(ResetScene);
- }
- /// <summary>
- /// 重置cube和相机
- /// </summary>
- void ResetScene() {
- transform.position = Vector3.zero;
- transform.rotation = Quaternion.Euler(Vector3.zero);
- Camera.main.transform.position = new Vector3(0, 0, -10);
- }
- /// <summary>
- /// 滑动使cube旋转
- /// </summary>
- /// <param name="ges"></param>
- void On_Swipe(Gesture ges) {
- Vector3 vec = new Vector3(ges.deltaPosition.y, ges.deltaPosition.x, 0);
- transform.Rotate(vec ,Space.World);
- }
- /// <summary>
- /// 拖拽移动cube
- /// </summary>
- /// <param name="ges"></param>
- void On_Drag(Gesture ges) {
- if (ges.pickedObject == gameObject) {
- transform.position = ges.GetTouchToWorldPoint(10);//相机z=-10 cube 0
- }
- }
- /// <summary>
- /// 双指滑动 平面移动相机
- /// </summary>
- /// <param name="ges"></param>
- void On_Swipe2Fingers(Gesture ges) {
- Camera.main.transform.Translate(new Vector3(-ges.deltaPosition.x, -ges.deltaPosition.y, 0));
- }
- /// <summary>
- /// 拉近拉远相机
- /// </summary>
- /// <param name="ges"></param>
- void On_Pinch(Gesture ges) {
- Camera.main.transform.Translate(new Vector3(0, 0, ges.deltaPinch));
- }
- }
摇杆
剩下的我比较感兴趣的也就是摇杆了,毕竟这个东西挺常用,而且,如果你说要让我自己从头做一个,我还是觉得挺懵逼的···
右键EasyTouchControls->Joystick创建一个摇杆
常用的设置可能也就是Type,决定了摇杆是动态的还是静态的,静态就是坐标固定,动态的话当手指离开屏幕,摇杆会消失,手触摸的时候在手指触摸的坐标生成摇杆。
设为动态时可以选择摇杆区域全屏,半屏,还可以自定义区域。
摇杆的值
- Debug.Log(ETCInput.GetAxis("Horizontal")+","+ ETCInput.GetAxis("Vertical"));
easytouch真的十分强大方便易上手,并且跟UGUI没有什么冲突。更多的功能只有在实际使用中去研究了。
相关推荐
- Unity插件EasyTouch学习记录
- Unity学习-插件
- Unity可视化图表插件Xcharts学习(2)LineChart的Theme组件
- Unity可视化图表插件Xcharts学习(3)LineChart的Title,Legend组件
- 【Unity3D自学记录】VR插件CardboardSDKForUnity解析(一)
- Unity与C#学习记录 - 06
- 【orange_】学习unity插件AVPro Movie Capture
- EasyTouch5插件学习
- 游戏开发学习记录02-用LeanCloud在Unity中部署后端服务
- Unity3D机器学习插件ML-Agents ToolKit(v0.5): 环境搭建和3DBallDemo运行
- 对 Chamberlain MyQ 车库门智能开关的安全性分析
- 聪明的程序员,从来不跟自己的技术“讲道理”!