首页 > 其他分享 >FingersGestures 简介

FingersGestures 简介

时间:2024-10-15 14:01:50浏览次数:1  
标签:swipeGesture 鼠标 FocusX 缩放 简介 FingersGestures 手势 gesture

FingersGestures 简介

FingersGestures为官方推荐手势插件,主要用于替代EasyTouch,EasyTouch很多年没有更新了,并且已经在官方资产商店下架,FingersGestures插件在官方商店具有很高的热度和持续的版本迭代,以及提供了二十多个实例进行参考,后续考虑项目中都使用此插件。

#核心模块类介绍:
FingersScript 为手势的核心类,贯穿全局,需要对其进行设置处理
主要的 Unity 手指脚本 - 只有其中一个应该存在。 FingersScript.Instance 让您可以轻松地添加和删除手势

主要参数设置说明:

  • EnableMulitTouch: 是否自动启用 Unity 输入多点触控

  • TeeatMousePointerAsFinger: True 将鼠标视为手指,否则为 false。 鼠标左键、中键和右键可以用作单独的手指,并且都具有相同的位置

  • TreatMouseWheelAsFingers: True 将鼠标滚轮视为两个手指进行旋转和缩放,否则为 false

  • **SimulateMouseWithTouches: ** 是否将触摸视为鼠标指针? 这需要在调用脚本 Awake 方法之前设置

  • ProcessUnityTouches: 是否处理 Unity 触摸事件。 如果为 false,您将需要实现 VirtualTouch* 方法来实现触摸处理

  • RequireControlKeyForMouseZoom: 鼠标缩放是否需要控制键。 如果为真,控制加鼠标滚轮缩放。 如果为 false,鼠标滚轮将单独缩放

  • MouseDistanceInUnitsForScaleAndRotate: 模拟手指开始鼠标缩放或旋转的距离(以单位为单位,默认为英寸)

  • MouseWheelDeltaMultiplier: 鼠标滚轮增量乘数

  • MouseWheelZoomOutSnapBack : 鼠标滚轮回弹选项。 X 是以单位回弹的距离,Y 是以单位回弹的距离

  • PassThroughObjects : 应该通过手势的对象。 默认情况下,某些 UI 组件会阻止手势,例如 Panel、Button、Dropdown 等。有关默认值的完整列表,请参阅 SetupDefaultPassThroughComponents 方法

  • AutoAddRequiredComponents : 是否自动添加所需的组件,如物理光线投射器、事件系统等(如果缺少)

  • ShowTouches : 是否使用 TouchCircles 数组显示触摸。 确保在发布您的游戏或应用程序之前关闭此功能

手势主要API说明:

当前插件提供了多种预制的手势类型,从GestureRecognizer派生进行实现
常用API:
注意手势是全局的,不需要选中,如果想指定目标需要绑定目标或者自行加逻辑判断。

StateUpdated:注册手势的回调事件

tripleTapGesture.StateUpdated += PlatformSpecificViewTapUpdated;

PlatformSpecificView:指定点击的目标

tripleTapGesture.PlatformSpecificView = bottomLabel.gameObject;

NumberOfTapsRequired:Tap手势的连点次数。单击、双击等都是靠这个区分

tripleTapGesture.NumberOfTapsRequired = 3;

AddGesture:注册手势

FingersScript.Instance.AddGesture(tripleTapGesture);

GestureRecognizerState:手势回调中判断当前的执行阶段

if (gesture.State == GestureRecognizerState.Ended)

RequireGestureRecognizerToFail:添加或移除一个需要失败的手势。 设置为 null 可以清除所有需要失败的手势。比如说下面的例子意思为如果doubleTapGesture手势触发了就会导致tapGesture触发失败。其实就是防止手势冲突使用的

tapGesture.RequireGestureRecognizerToFail = doubleTapGesture;

gesture.FocusX, gesture.FocusY:回调中点击的屏幕坐标
DebugText("Double tapped at {0}, {1}", gesture.FocusX, gesture.FocusY);

Direction:设置滑动方向
swipeGesture.Direction = SwipeGestureRecognizerDirection.Down;

DirectionThreshold:对于设置的方向,这是在该方向与另一个方向上必须成比例的滑动量。 例如,与沿 x 轴移动相比,向下滑动手势需要在 y 轴上移动更多倍数。 默认值为 1.5,这意味着向下滑动手势需要在 y 轴与 x 轴上大 1.5 倍。小于或等于 1 表示任何比率都可以接受。简单来说就是这个值越大就需要越贴合目标方向
swipeGesture.DirectionThreshold = directionThreshold;// allow a swipe, regardless of slope

gesture.StartFocusX, gesture.StartFocusY:手势开始的位置
DebugText("Swiped from {0},{1} to {2},{3}; velocity: {4}, {5}", gesture.StartFocusX, gesture.StartFocusY, gesture.FocusX, gesture.FocusY, swipeGesture.VelocityX, swipeGesture.VelocityY);

swipeGesture.VelocityX, swipeGesture.VelocityY:滑动的速度(根据focus)
DebugText("Swiped from {0},{1} to {2},{3}; velocity: {4}, {5}", gesture.StartFocusX, gesture.StartFocusY, gesture.FocusX, gesture.FocusY, swipeGesture.VelocityX, swipeGesture.VelocityY);

MinimumNumberOfTouchesToTrack:设置最少用到的手指数,一般用1或2。要注意不是每个手势都支持多指

panGesture.MinimumNumberOfTouchesToTrack = 2;

MaximumNumberOfTouchesToTrack:设置最大用到的手指数,默认用1或2

longPressGesture.MaximumNumberOfTouchesToTrack = 1;

gesture.DeltaX, gesture.DeltaY:手势位移的距离

DebugText("Panned, Location: {0}, {1}, Delta: {2}, {3}", gesture.FocusX, gesture.FocusY, gesture.DeltaX, gesture.DeltaY);

scaleGesture.ScaleMultiplier:手指距离的缩放值

DebugText("Scaled: {0}, Focus: {1}, {2}", scaleGesture.ScaleMultiplier, scaleGesture.FocusX, scaleGesture.FocusY);

rotateGesture.RotationRadiansDelta:旋转弧度的变化

Earth.transform.Rotate(0.0f, 0.0f, rotateGesture.RotationRadiansDelta * Mathf.Rad2Deg);

AllowSimultaneousExecution:允许多个手势同时操作一个目标

panGesture.AllowSimultaneousExecution(scaleGesture);
panGesture.AllowSimultaneousExecution(rotateGesture);
scaleGesture.AllowSimultaneousExecution(rotateGesture);

CaptureGestureHandler:捕获点击的目标并处理。返回false是可穿透,true为不可穿透,null为默认。

手势类型说明:

TapGestureRecognizer: 单击手势类型
轻击手势检测一个或多个连续轻击。 结束状态表示点击成功。

PanGestureRecognizer: 平移手势类型

平移手势检测触摸的移动。

SwipeGestureRecognizer: 轻扫手势类型

滑动手势是在五个方向之一的快速移动:向左、向右、向下、向上或任何方向。

LongPressGestureRecognizer: 长按手势类型

长按手势检测到点击并按住,然后回调移动,直到

RotateGestureRecognizer: 旋转手势类型

旋转手势使用两次触摸来回调旋转角度,因为两次触摸围绕中心点扭转

ScaleGestureRecognizer: 缩放手势类型

缩放手势检测两个手指彼此靠近或远离移动以缩放某物

插件包:
\192.168.5.10\youkia\项目工作\世界之光-起源\临时目录\前端\Fingers - Touch Gestures for Unity 3.0.8.unitypackage

标签:swipeGesture,鼠标,FocusX,缩放,简介,FingersGestures,手势,gesture
From: https://www.cnblogs.com/comradexiao/p/18467361

相关文章

  • HarmonyOS简介
    1、应用开发的机遇、挑战和趋势:2、HarmonyOS核心技术理念:三大技术理念:(1)、一次开发,多端部署:一个工程,一次开发上架,多端按需部署。目的是为了支撑开发者高效的开发,在多种终端设备上的应用。HarmonyOS提供的几个核心能力:多端开发环境、多端开发能力、多端开发机制。(2)、......
  • 电视视频制式+杜比音效 简介
    本文章作为科普知识,没有深入技术了解,内容多为整合,来源于百度百科及其他博主一、电视视频制式视频制式可以分为ATV和DTV,其中ATV包括了PAL、NTSC、SECAM;DTV包括了ATSC、DVB、ISDB-T1.ATV(1)PALPAL制(PhaseAlterationLine)又称为帕尔制。PAL625线,每秒25格,隔行扫描,PAL色彩编......
  • HyperMesh基础教程:概述与有限元分析简介
    1.1HyperMesh概述本节将介绍有限单元法基本原理,HyperMesh软件基本功能及界面介绍,获取在线帮助等内容。 1.1.1有限元分析方法简介有限单元法(FEM)是一种可以精确预测复杂结构在外界载荷作用下响应的方法,该数值方法起源于上世纪50年代。在有限单元法出现之前,验证设计方案或......
  • 猫头虎分享:Python库 Selenium 的简介、安装、用法详解入门教程
    ......
  • 电子电气架构---汽车OEM敏捷式集成方案简介
    我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。无......
  • C/C++简介
    C++的定义和历史‌12C++(cplusplus)是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔实验室研发。C++既可以进行过程化程序设计,又可以进行面向对象的程序设计,支持多重编程范式。C++的特点和用途C++是一种静态数据类型检查......
  • Mysql(1)—简介及Windows环境下载安装
    Mysql(1)—简介及Windows环境下载安装一、关于Mysql1.1简介MySQL是一个流行的关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行操作。MySQL由瑞典MySQLAB公司开发,后来被SunMicrosystems收购,最终成为Oracle公司的产品。它是最广泛使用的开源数据库之一,通常用于Web应用......
  • spring入门(一)spring简介
    一、spring简介spring能够简化开发,降低企业级开发的复杂性。框架整合,高效整合其他技术,提高企业级应用开发与运行效率。主要学习,简化开发和框架整合简化开发:IOC(反转控制),AOP(面向切面编程),事务处理框架整合:整合MyBatis,整合MyBatis-plus,整合Strut......
  • RabbitMQ简介及安装类
    RabbitMQ概述-MQ介绍RabbitMQ是一个开源的消息代理和队列服务器,它支持多种消息协议,并且可以轻松地与多种编程语言和框架集成。RabbitMQ是使用Erlang语言编写的,因此它具有高并发和高可用性的特点。以下是RabbitMQ的一些关键特性和概念消息代理(MessageBroker)RabbitMQ充当消......
  • SpringCloud Alibaba-01 入门简介
    1.SpringCloudAlibaba是由阿里巴巴结合自身丰富的微服务实践而推出的微服务开发的一站式解决方案。它是SpringCloud生态中的第二代实现,提供了包括服务注册与发现、分布式配置管理、服务限流降级、消息驱动能力、阿里云对象存储、分布式任务调度等在内的多种功能。1.1......