1. UICamera脚本需要挂接在所有的和UI有关的摄像机上,这样才能够有通知事件。
2. UICamera脚本实际做的事是发送NGUI事件给所有被它所附加的摄像机所看见的对象。除此之外,它不对UI做任何事情了。
3. 你能在场景里拥有多个UICamera脚本。大多游戏会有一个camera绘制挂件,另一个camera绘制游戏对象。
4. EventType 基于深度还是基于与摄像机的距离来排序事件
UICamera的第一个选项,Event Type决定了脚本怎样排列它下面鼠标和触摸事件的顺序。如果设置为UI模式,那么它将一直基于挂件的depth--就和绘制顺序一样。改变选项为World模式,只有在你添加UICamera到你的MainCamera上面的时候才应该这么做。这样做将通过点击到的对象到摄像机的距离排序。
5. Debug选项能用于调试当前鼠标下面是什么。如果当你点击一些按钮的时候,你不知道当前和鼠标事件交互的是什么对象,只要打开这个选项,你就能在顶部看到它。
6. EventMask定义了一些层级,只有该设置里允许的层级里的东西才能够接收到UICamera发送的NGUI事件通知。
 
实践
在MainCamera上添加UICamera脚本,设置debug开启,在场景中加入一个Cube并且具有collider(是否IsTrigger不关键),因为这个摄像机主要拍摄3D场景,所以设置为3Dworld。在UIRoot下的摄像机设置为UI(目的是让事件发送的先后以Depth为根据)。
7. 悬浮提示是否会有粘滞性
Stick Tooltip选项用于调整tooltip的行为。如果关闭,tooltip将会在鼠标再次移动的时候立刻隐藏。如果打开,tooltip将保持打开,知道鼠标离开同一个对象。 
8. 第二次以后附上的UICamera将会继承第一台主UICamera的其余属性
9. Tooltip  Delay控制鼠标悬停在某个对象上而且在OnTooltip通知发送到那个对象之前的时间间隔。这个值的单位是秒。
10. Raycast Range控制了射线的长度,大部分情况下这个值可以无视。这个值是使用世界单位的,所以如果你摄像机的near clip是0.3而far clipping是1000,你可能发现一些很远的对象没有响应点击,不妨设置这个值为2000试试(要比你camera的摄像机的far和near平面之差更大)。设置为-1表示无穷远。
11. 事件源可以设置鼠标、键盘、触摸事件。
12. Threshold中,鼠标拖拽的触发阈值。
 
13. 直接将这些事件写在物体(或UI)的脚本里,就可以在相对应的时机里触发它们。这些事件的完整目录见后面附录。
OnSelect(true) 发生在当鼠标首次点击某UI时。
OnDrag(delta)当该物体被拖拽时调用
OnDragOver(draggedObject)当该物体面前通过着另一个被拖拽物体时,调用
OnDragOut (draggedObject) 脱出时调用
OnTooltip (show) 长时间悬浮时调用
OnScroll (float delta) 鼠标滚轮滚动时调用
OnKey (KeyCode key) 按键时调用
 
 
 
 
——————————————————附录————————————————————————
/// <summary>
/// This script should be attached to each camera that's used to draw the objects with
/// UI components on them. This may mean only one camera (main camera or your UI camera),
/// or multiple cameras if you happen to have multiple viewports. Failing to attach this
/// script simply means that objects drawn by this camera won't receive UI notifications:
///
/// * 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 first pressed on an object. Repeated presses won't result in an OnSelect(true).
/// * OnClick () is sent when a mouse is pressed and released on the same object.
///   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.
///
/// * OnDragStart () is sent to a game object under the touch just before the OnDrag() notifications begin.
/// * OnDrag (delta) is sent to an object that's being dragged.
/// * OnDragOver (draggedObject) is sent to a game object when another object is dragged over its area.
/// * OnDragOut (draggedObject) is sent to a game object when another object is dragged out of its area.
/// * OnDragEnd () is sent to a dragged object when the drag event finishes.
///
/// * 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.
/// </summary>

 
 

NGUI的UICamera的更多相关文章

  1. NGUI之UICamera控制触摸,鼠标事件

    http://blog.csdn.net/onerain88/article/details/18963539 . UICamera 功能介绍 主要包括UI事件的监听,分发,覆盖范围为此Camera渲 ...

  2. 【Unity3D】【NGUI】UICamera

    原文:http://www.tasharen.com/forum/index.php?topic=6711.0 NGUI讨论群:333417608 概述 UICamera这个名字不是很合适,保留的原因 ...

  3. Unity3D开发之NGUI点击事件穿透响应处理

    http://www.xuebuyuan.com/1936292.html 在使用NGUI 开发2D项目的时候,发现了一个问题,就是如果点出一个菜单,然后点击菜单上面的按钮的时候就会使得按钮下面的物品 ...

  4. Unity 为NGUI增加体感输入方式

    背景 NGUI在处理UI和输入方面确实做的不错,但是现在的问题是公司引入体感之后,是通过手的位置来实现按钮的点击操作,前提我不想改变原先设计好的NGUI界面和机制,怎么破? NGUI的输入底层机制 N ...

  5. Unity 相关经典博客资源总结(持续更新)

    就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: Unity官方脚本  点评:这个不用说了,最核心的内容,理解整个Unity引擎的方方面面,梳理结构. Unity ...

  6. Unity摄像机的正交视图与透视图

    Unity Camera的两种模式 Projection:投射,投影 Unity的MainCamera的Projection可选择Perspective[透视],Orthographic[正交],是指 ...

  7. 【转】Unity 相关经典博客资源总结(持续更新)

    原文:http://blog.csdn.net/prothi/article/details/20123319 就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: ...

  8. [cb]UIGrid+UIStretch的自适应

    自适应需求 如下图所示:一个Grid下面有六个Button,它们需要在不同的分辨下拉伸适应(Horizontal)宽度,以保证填充满底部 要点分析 首先有这两个要点 1.UIGrid中的Cell Wi ...

  9. Unity3D手机平台分辨率自动匹配教程

    1. 下载NGUI 2. 导入NGUI package到Unity. 这时候菜单上会出现NGUI的菜单栏: 3. 将默认的Main Camera删掉,通过菜单栏NGUI->Create新建一个2 ...

随机推荐

  1. 剑指offer--48.机器人的运动范围

    这道题不是要求走一趟最多走多少,而是最多走多少,WA几次才想通. ------------------------------------------------------------------- ...

  2. Android.mk编译的写法

    更多Android.mk的 用法见 :http://blog.csdn.net/fengbingchun/article/details/38705519 如何修改Android.mk 为Androi ...

  3. 为什么写《Tomcat内核设计剖析》

    三四年前更多地还是做web业务开发,基本不关心web层以下的东西,但是每次出故障时面对现象都不能从脑子里形成由底层到应用层的完整的逻辑,往往只能分析到Web应用就无法继续往下,Web容器完全就是一个黑 ...

  4. 从JDK源码角度看Boolean

    Java的Boolean类主要作用就是对基本类型boolean进行封装,提供了一些处理boolean类型的方法,比如String类型和boolean类型的转换. 主要实现源码如下: public fi ...

  5. Vim技能修炼教程(3) - 语法高亮进阶

    语法高亮进阶 首先我们复习一下上节学到的三个命令: * syntax match用于定义正则表达式和规则的对应 * highlight default定义配色方案 * highlight link将正 ...

  6. ThreadDeath 理解

    public class RunnableTest2 { public static Object obj1 = new Object(); public static Object obj2 = n ...

  7. BZOJ3963: [WF2011]MachineWorks 【CDQ+斜率优化DP】*

    BZOJ3963: [WF2011]MachineWorks Description 你是任意性复杂机器公司(Arbitrarily Complex Machines, ACM)的经理,公司使用更加先 ...

  8. 使用python处理selenium中的获取元素属性问题

    # 获取我的订单元素class属性值 at = self.driver.find_element_by_link_text('我的订单').get_attribute('class') # 判断cla ...

  9. java集成WebSocket向指定用户发送消息

    一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...

  10. 《DSP using MATLAB》示例Example 8.9