注意:本文翻译时NGUI版本已经更新到3.0.7
原文地址:http://www.tasharen.com/forum/index.php?topic=6711
UICamera是一个命名不太好的组件。实际上,它的名字某种原因只是为了保持向后兼容。
UICamera脚本实际做的事是发送NGUI事件给所有被它所附加的摄像机所看见的对象。除此之外,它不对UI做任何事情了。实际上,如果你想要你的游戏中的对象能接收NGUI类似OnPress,OnClick等事件,那么你需要做的是附加UICamera脚本到你的main camera上。
你能在场景里拥有多个UICamera脚本。大多游戏会有一个camera绘制挂件,另一个camera绘制游戏对象。
UICamera的第一个选项,Event Type决定了脚本怎样排列它下面鼠标和触摸事件的顺序。如果设置为UI模式,那么它将一直基于挂件的depth--就和绘制顺序一样。改变选项为World模式,只有在你添加UICamera到你的MainCamera上面的时候才应该这么做。这样做将通过点击到的对象到摄像机的距离排序。
EventMask决定了哪个游戏对象的层能用于接收事件。大多数情况下,由于这个值和UnityEngine.Camera的CullingMask混合,你能让这个值为“Everything”,当然你也能在你想要的时候调整它。如果你改变了包含UI层级的游戏对象的Layer,请确认调整Event Mask,不然你会发现你的UI再也不能接受到事件。(译者言,简单的说,就是保持这个值和你UI对象的Layer名字一样)
Debug选项能用于调试当前鼠标下面是什么。如果当你点击一些按钮的时候,你不知道当前和鼠标事件交互的是什么对象,只要打开这个选项,你就能在顶部看到它。
允许Multi-Touch选项控制是否支持多点触摸。如果关闭,多点触摸将被视为单点触摸。
Stick Tooltip选项用于调整tooltip的行为。如果关闭,tooltip将会在鼠标再次移动的时候立刻隐藏。如果打开,tooltip将保持打开,知道鼠标离开同一个对象。
Tooltip Delay控制鼠标悬停在某个对象上而且在OnTooltip通知发送到那个对象之前的事件间隔。这个值的单位是秒。
Raycast Range控制了射线的长度,大部分情况下这个值可以无视。这个值是使用世界单位的,所以如果你摄像机的near clip是0.3而far clipping是1000,你可能发现一些很远的对象没有响应点击,不妨设置这个值为2000试试(要比你camera的摄像机的far和near平面之差更大)
Event Sources部分控制着NGUI将处理什么事件类型。如果某个选项被关闭,这些事件将不被处理。一些平台通过hood强制关闭了一些特定事件。例如控制台会自动关闭鼠标和触摸事件。
Thresholds部分让你调整鼠标和触摸事件的点击、拖、轻拍行为。这些值的单位是像素
Axes and Keys部分让你选择哪个轴决定移动哪里。这些轴应该和你项目的Input Manager里面的名字匹配。
void OnPress(bool isPressed){ if(isPressed) Debug.Log("ressed on!"); else Debug.Log("unpressed"); }