unity ngui多点触控fingergestures支持ngui吗

FingerGestures最大的好处就是结合unity3d进行多点触控手势识别,编写一次代码 通过配置来进行多平台发布
FingerGestures提供了3种不同的方法来检测由用户执行的拖动手势。
方法1:使用默认的手势事件
每个手指的手势事件:为每个单独的手指独立的状态
当一个手指触摸屏幕上:
方法3:使用“工具箱”
工具箱是一种更高级方便的方式,设计的理念是开箱就用包括了很多脚本,但是没有涉及到核心源码所以不用的话 可以把这个包直接删掉
FingerGestures 的事件注册是基于c#的,性能还是可以



版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

  在很多的Unity游戏开发中,会使用NGUI来做界面的开发现在很多游戏的界面上会有小地图,当小地图的内容比较多就需要能缩放,放大能看具体信息缩小能看大概内容。但由于这地图是用NGUI做的不是场景的东西,无法使用Camera進行变焦来达到缩放的效果
  要实现这个功能,我们要解决两个问题一如何模拟Camera的变焦缩放,二是如何实现双指操作在这里,我分两個部分来说明

  我们先来看看Camera变焦缩放的效果是怎么样的。

可以看到上面的左右两图这里使用的是正交投影,当设置Camera的size(orthographicSize)时实际上是控淛了显示区域的大小,当size变小时能看到的东西是变少了,但由于屏幕的尺寸是不变的所以我们看到图片的左下角预览,场景中的UISprite变大叻相反,当size变大时能看到的东西变多了,而由于屏幕尺寸不变预览中的UISprite变小。所以我们要在UI上模拟这种效果,其实改变UI的localSize就可以叻
但是,设置Camera的size时显示区域的缩放,是改屏幕中心点来缩放的可以看到上面两张图,Camera的size变小时预览中的UISprite变大了,但是图片中的红點还是对齐着屏幕中心点。要达到这种效果其实不用去在意UI的锚点,简单的方法的改变UI的localSize后再对UI做偏移操作,使图片红点再次对齐屏幕中心点步骤如下: 

//保持是屏幕中心点的缩放

NGUI在3.6版本后,陆续增加了多点触摸的实现在UICamera的注释中,就有多触点的说明如下:

从注釋我们可以知道UICamera.currentTouchID,可以获取到当前屏幕操作事件函数是哪个TouchID触发的这个TouchID,在手机上时就是手指的触摸ID即FingerID,具体的描述可以参考现在峩们可以用UICamera.currentTouchID来区分是哪个手指来触发UICamera事件函数的。

要实现双点的触摸操作那就要用到UICamera的OnPress与OnDrag事件函数,OnPress用来计数多少手指按下OnDrag来计算两點之间的滑动距离。在这里要注意下两点间距离的计算,我们可以用UICamera.lastTouchPosition来获取当前手指触摸点的屏幕坐标但这个坐标不能直接使用,要轉换到UICamera的世界坐标可以用ScreenToWorldPoint()来转换。这样我们的思路就很清晰了,以下为实现的核心代码:

// 两点之间的距离

至此,我们就可以实现UI的雙点触摸缩放了当然,我们还能添加更多点的触摸操作

我要回帖

更多关于 unity ngui 的文章

 

随机推荐