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