NGUI不仅提供了图形接口,还提供了输入事件接口!事件接口是通过UICamera来实现的。

Unity3d 为我们提供的原装的input尽管非常方便,但真正跨平台使用时(尤其是跨手机与Pc机时)仍然不是非常方便。

NGUI对input又进行了二次封装,将全部平台上的事件统一转换成MouseOrTouch。

使用起来也比input要方便的多。input要在update中处理。而NGUI为我们提供了大量的函数,若要使用函数。仅仅须要在脚本中加入下列函数就可以:

/// - OnHover (isOver) is sent when the mouse hovers over a collider or moves away.
/// - OnPress (isDown) is sent when a mouse button gets pressed on the collider.
/// - OnSelect (selected) is sent when a mouse button is released on the same object as it was pressed on.
/// - OnClick () is sent with the same conditions as OnSelect, with the added check to see if the mouse has not moved much. UICamera.currentTouchID tells you which button was clicked.
/// - OnDoubleClick () is sent when the click happens twice within a fourth of a second. UICamera.currentTouchID tells you which button was clicked.
/// - OnDrag (delta) is sent when a mouse or touch gets pressed on a collider and starts dragging it.
/// - OnDrop (gameObject) is sent when the mouse or touch get released on a different collider than the one that was being dragged.
/// - OnInput (text) is sent when typing (after selecting a collider by clicking on it).
/// - OnTooltip (show) is sent when the mouse hovers over a collider for some time without moving.
/// - OnScroll (float delta) is sent out when the mouse scroll wheel is moved.
/// - OnKey (KeyCode key) is sent when keyboard or controller input is used.

但它的缺点就是。这些事件都要基于碰撞体。也就是说,若要使用这些函数,就必须将脚本所在的gameobject上加入碰撞体。!!

这样。假设出现多层叠加的情况,就比較纠结了。

比方如今有这样一个需求:

1、有一个面板,这个面板支持左右拖动。而且在此面包上的不论什么地方拖动都有效!

2、此面板上有个button。

3、当在button上左右拖拽时,面板也要感应到拖拽事件!

若要完毕这个需求,首先须要有两个碰撞体,非常明显,button的碰撞体要在面板的上面。但这样无法完毕第三条需求。

幸运的是,NGUI为我们留了个后门!它能够设置一个默认的事件接受体。

切此gameobjec不须要碰撞体!

static public GameObject genericEventHandler;

如今实现上面提到的三个需求。

1、将面板的gameobject赋值给genericEventHandler。

2、给面板上的某个脚本加入一个OnDrag函数

3、加入一个button(有碰撞体)

这样就攻克了上面的问题,且仅仅须要一个碰撞体!

ngui 输入事件处理的更多相关文章

  1. linux输入子系统(input subsystem)之evdev.c事件处理过程

    1.代码 input_subsys.drv.c 在linux输入子系统(input subsystem)之按键输入和LED控制的基础上有小改动,input_subsys_test.c不变. input ...

  2. 9.2.2、Libgdx的输入处理之事件处理

    (官网:www.libgdx.cn) 事件处理可以更加准确的获取用户的输入.事件处理提供了一种可以通过用户接口进行交互的方法.比如按下.释放一个按钮. 输入处理 事件处理通过观察者模式来完成.首先,需 ...

  3. Linux 输入子系统

    Technorati 标签: Kernel 输入子系统 Input      在Linux中,输入设备(如按键.键盘.触摸屏.鼠标等)是典型的字符设备,其一般的工作机理,是底层在按键.触摸时,触发一个 ...

  4. Unity3D-深入剖析NGUI的游戏UI架构

    Unity3D-NGUI分析,使用NGUI做UI须要注意的几个要点在此我想罗列一下,对我在U3D上做UI的一些总结,最后解剖一下NGUI的源码.它是假设架构和运作的. 在此前我介绍了自己项目的架构方式 ...

  5. Unity3D NGUI事件监听的综合管理

    首先,将Event Listener挂在按钮上 Event Listener的源码很简单 就是利用C#的时间委托机制 注册了UI场景的事件而已 public class UIEventListener ...

  6. androd输入管理系统机制解析

     android的输入管理系统主要完成按键.触摸板.鼠标等输入设备的事件输入,功能包括,输入设备的事件输入及向焦点窗口和焦点视图的事件派发,事件的插入,事件的过滤,事件的拦截等功能. 整个输入系统 ...

  7. UIButton vs UIEventListener 事件处理

    NGUI的事件 在使用NGUI的事件处理时,发现UIButton和UIEventListener之间的共同点越来越多. 当然处理事件,也有一些其它的函数,比如:UIEventTrigger,Butto ...

  8. linux下如何模拟按键输入和模拟鼠标【转】

    转自:http://www.cnblogs.com/leaven/archive/2010/11/30/1891947.html 查看/dev/input/eventX是什么类型的事件, cat /p ...

  9. 输入子系统--event层分析【转】

    转自:http://blog.csdn.net/beyondioi/article/details/9186723 ########################################## ...

随机推荐

  1. 洛谷 [P1552] 派遣

    树型DP + 可并堆 非常清楚的想到是树型DP, 但是如何维护最小值, 于是就去新学了可并堆 #include <iostream> #include <cstring> #i ...

  2. CentOS 基本操作

    1.Vi 基本操作 1) 进入vi  在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:  $ vi myfile  进入vi之后,是处于「命令行模式(command mode)」,您要切 ...

  3. [LeetCode] Search Insert Position 二分搜索

    Given a sorted array and a target value, return the index if the target is found. If not, return the ...

  4. [LeetCode] Maximum Product Subarray 连续数列最大积

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  5. netbean下搭建mariadb数据库

    本人的操作系统Manjaro 最新版,mariadb版本为10.1.1,使用netbeasn开发java WEB,搭建过程如下: 1.安装数据库 pacman -S mariadb 2.启动数据库服务 ...

  6. python3.5爬虫框架Scrapy的安装和排错(windows环境)

    本文记录win7系统下使用python3.5安装Scrapy爬虫框架. Scrapy框架目前的官方文档说明是还不支持windows的python3环境的,但是网友反映以及实际测试均可以使用,下面就进行 ...

  7. hdu3452 无向树去掉最小的边集使任何叶子与根不连通 / 最小割

    思路一下就上来了,叶子向汇点连边,inf保证不会成为割,跑根到汇点最小割即可.注意无向树双向建边.基础题,分分钟1A: #include<iostream> #include<que ...

  8. 无法启动Visual Studio的localhost web服务器,端口"xxxx"已被使用

    解决方法:项目属性-Web里面有web服务器端口的设置,换个端口即可.项目属性->web->服务器,不要选择“自动分配端口”,选择“使用指定端口”,后面输入一个端口号

  9. Linux系统日常运维-修改IP地址

    分享下高手写的很好的文章 IP地址.子网掩码.网络号.主机号.网络地址.主机地址 step 0: check the iptables.selinux service iptables iptable ...

  10. Longest Valid Parentheses - LeetCode

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...