NGUI核心组件

UICamera脚本是所有功能性UI的关键组件。它的责任是向它所在的摄像机渲染出来的所有有碰撞体的对象发送NGUI事件。如果在场景中你有一个摄像机,确保它上面挂载了UICamera脚本。如果你有多个摄像机,确保至少有一个用于渲染UI的摄像机挂载了UICamera。将这个脚本挂载在场景的主摄像机上,你场景中具有碰撞和的物体就可以接收到诸如OnClick,OnHover,OnDrag等NGUI事件。
参数 
Use Mouse 决定摄像机是否会响应鼠标事件 ;

Use Touch 决定摄像机是否会响应触摸事件 ;

Use Keyboard 可以允许发送键盘事件(OnKey) ;

Use Controller 可以允许发送游戏手柄事件(同样通过OnKey发送) ;

Event Receiver Mask 决定哪一层接收事件。通常会与摄像机的CullingMask相匹配 


Tool Tip Delay 控制鼠标在某一个对象上面停留多少秒之后,会发送OnTooltip事件 ;

Mouse Click Threshold 控制在鼠标按下出发OnPress(true)事件之后,还能够触发OnClick事件的最大可移动距离 ;

Touch Click Threshold 与上一个一样,不过是针对触摸事件 ;

Range Distance 决定对象与摄像机距离多远能够接收到消息。只有大于0的值有效,小于0的值表示摄像机能够看到的最远距离 ;

Scroll Axis Name 让你可以改变OnScroll事件中使用的轴 ;

Tips 

只是用UICamera而不使用其他的NGUI组件就可以实现所以NGUI事件系统的功能

NGUI:UIAnchor 
Anchor脚本可以用来实现多个目的,这些在Example0里面都有用到。 

1. 只要提供一个half-pixel偏移量,它可以让一个控件的位置在Windows系统上精确的显示出来(只有这个Anchor的子控件会受到影响) 

2. 如果挂载到一个对象上,那么他可以将这个对象依附到屏幕的角落或者边缘参数 
UI Camera 是渲染这些对象的摄像机,如果没有手动设置,它会自动设置一个场景中的摄像机 ;
Side 设置锚点,分别可以设置4个角,4个边和中心点 ;

Half Pixel Offset 可以让对象在windows系统上显示的时候,有半个像素的偏移量。2D UI界面需要勾选上这个 ;

Depth Offset 用来调整UIAnchor计算出来的位置的深度。它主要作用于基于透视的摄像机。这个值是世界坐标,与摄像机的远近裁切面类似 ;

Relative Offset 相对偏移量 让你可以为物体设置以屏幕半分比为单位的偏移量 ;

Tips 

1. 如果一个对象上面挂载了一个UIAnchor,那么他的transform的值不能被手动修改-他们是被脚本控制的。如果你想对锚点加一个偏移量,那么给他添加一个子物体。举例来说,为了保证你的控件在一直在(100,100)的位置,你的对象结构应该是:UI->Anchor->Offset->Widget。 
2. 如果你想将一个控件的位置设置为屏幕左边25%的位置,你可以将他设置为一个UIAnchor的子物体,这个UIAnchor的Side设置为Left,Relateive Offset 的X值设置为0.25。


NGUI:UIPanel 
UIPanel负责创建实际的集合图形。你不需要手动的添加UIPanel-一旦你创建一个控件,它会自动被添加。如果你想将你的UI渲染拆分到不同的Draw Call中,你可以手动创建你自己的UIPanel,例如你要创建一个分屏的游戏,每个屏用一个摄像机进行渲染,这种秦光下你就需要2个UIPanel来避免控件互相重叠。

参数 

Panel Tool 决定这一个Panel是否会显示在Panel Tool中。那些动态创建的临时Panel可以将这个选项关掉,比如那些HUD血条,滚动战斗文字等。 

Normals 标志让你选择UI的几何图形是否会受到法线和切线的影响。如果你的UI会受光照影响,那么这个选项需要被选上。 

Depth Pass 让你添加一个额外的之渲染深度的Draw Call。打开这个选项可以节省部分填充率,因为在你的不透明的控件后面的物体都不会再被渲染。 
----------------- 
Widgets 告诉你这个Panel渲染了多少个控件 

Draw Calls 告诉你这个Panel会消耗多少个Draw Call。这个数值越低,效率越高 ;

Debug Info 让你选择显示哪种调试信息 ;

Clipping 让你选择是否需要裁切功能。默认情况下不会有裁切。裁切是使用Shader来实现的,当选择了任意一种不是None的裁切模式之后,NGUI会尝试自动的获取一个裁切版本的shader,并更新材质。 

如果选择了裁切模式,你可以选择裁切区域的中心点和大小,单位是像素。如果不修改这些参数的默认值,那么会按照整个屏幕的大小来裁切,这个跟没有裁切是一样的效果。 

如果裁切模式选择了SoftAlpha,你可以改变Softness参数,这个参数决定了被裁切内容淡出的边缘宽度,这个在整个裁切区域的四个边都是相等的 

Material 是一个只读的值。你可能会看到1个以上的material,每个material会消耗一个Draw Call。为了方便,每个Draw Call的面数也显示在这里 Tips ;

1. 在默认情况下,如果UIPanel不存在,它会在最根层的控件中自动创建。因此,最好将你的UI整理到一个通用的父节点。 
2. 你可以通过将UIPanel使用的texture和font整理到同一个atlas来减少UIPanel使用的material数量 
3. 你可以放心的删除那些没有使用的或者显示了0个widgets的UIPanel 
4. 如果你删除了一个还管理了其他widgets的UIPanel,这些widgets会消失。点击Play或者disable掉这些widgets再enable它们,就可以重新显示(实际上是又重新添加了一个新的UIPanel) 
5. 只要没有东西发生改变,已经创建好的几何图形不会重建。意思就是如果你的UI一直保持不动,那么这些几何图形不会每一帧都update,他们会一直被重用,这样提高了一些效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值