博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NGUI的UICamera
阅读量:4457 次
发布时间:2019-06-08

本文共 3178 字,大约阅读时间需要 10 分钟。

参考
 
全文请查看:
 
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>
 
 

转载于:https://www.cnblogs.com/JackSamuel/p/9591858.html

你可能感兴趣的文章
LeetCode--018--四数之和(java)
查看>>
Redis消息队列
查看>>
电商网站架构设计
查看>>
http://jingyan.baidu.com/article/4dc40848e7b69bc8d946f127.html
查看>>
WCF netTcp配置
查看>>
数据类型转换
查看>>
Nodejs学习笔记(2) 阻塞/非阻塞实例 与 Nodejs事件
查看>>
什么是FreeMaker
查看>>
设计模式学习笔记(总结篇:模式分类)
查看>>
TCP的三次握手/建立连接
查看>>
Python 教程阅读笔记(一):使用解释器
查看>>
运算符重载
查看>>
SDWebImage 新版接口使用方法
查看>>
DataTable导出为word,excel,html,csv,pdf,.txt
查看>>
android ListView详解
查看>>
软件工程 第一次作业
查看>>
Content Server HA搭建
查看>>
vue-textarea 自适应高度
查看>>
(2)数据结构——线性表(链表)实现
查看>>
[leetCode]Linked List Cycle I+II
查看>>