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. windows环境下使用MySQL导入数据乱码报错的解决办法

    Linux及Mac系统下使用source xxx.sql 可直接导入测试数据(注意必须先切换到当前xxx.sql的目录下), 但在Windows环境下导入会出现乱码报错的情况, 主要是因为编码的问题, ...

  2. Deep Learning深入浅出

    作者:Jacky Yang链接:https://www.zhihu.com/question/26006703/answer/129209540来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  3. vim简单的文本编辑命令

    <blockquote>:e! enter</blockquote>消除所有这次编辑的,回到原来文件的样子.不过此文件还是打开状态.<blockquote>:q! ...

  4. IOI2002 POJ1054 The Troublesome Frog 讨厌的青蛙 (离散化+剪枝)

    Description In Korea, the naughtiness of the cheonggaeguri, a small frog, is legendary. This is a we ...

  5. .NET 中的轻量级线程安全

    对线程安全有要求的代码中,通常会使用锁(lock).自 .NET 诞生以来就有锁,然而从 .NET Framework 4.0 开始,又诞生了 6 个轻量级的线程安全方案:SpinLock, Spin ...

  6. eclipse添加propedit插件

    1.propedit插件 这个插件基本上可以支持各种语言的转换. 2.方法如下: “help”--“Install new software”--“add” name:propedit Locatio ...

  7. Django(一):从socket到MVC

    一.socket的http套路 web应用本质上是一个socket服务端,用户的浏览器是一个socket客户端.socket处在应用层与传输层之间,是操作系统中I/O系统的延伸部分(接口),负责系统进 ...

  8. thinkphp5 下 的Nginx 伪静态

    server { listen 80; server_name all.bjed.com; root "F:\www\asdata"; location / { index ind ...

  9. 《DSP using MATLAB》示例Example 8.7

    %% ------------------------------------------------------------------------ %% Output Info about thi ...

  10. 【DUBBO】dobbo的application的配置项

    Dubbo:application的配置项[一]:配置项 <dubbo:application name="服务名字" owner="拥有者" organ ...