NGUI: Next-Gen UI kit
NGUI是一个功能强大的用于Unity(Pro和Free)的UI系统和事件通知框架,用C#编写,严格遵循KISS原则。 它具有干净的代码和简单,简约的一切方法。 许多行为类都保存在200行代码之下。 对于程序员来说,这意味着使用该套件的时间要简单得多 - 从扩展功能到调整现有套件。但是毕竟是第三方插件,相对UGUI来说功能更加丰富但是性能稍微低一点。相对来说各有利弊。
UIRoot
- ScaleStyle
1.Flexible:就是UI显示以图片的真实像素为准,在Minimum Hight 和Maximum Hight 范围内,不进行缩放,图片是多大就是多大,当超过这个范围后,就以此最小值,或最大值的显示范围为准。
2.Constrained:即UI根据设备当前的分辨率自动进行缩放。ContentWidth 基于宽度缩放,ConentHeight,基于高度缩放,Fit后边的勾表示选择的模式,若只打一个勾就是基于宽度或高度缩放,若两个勾都打上,则会根据所填的960 640为基准,如果宽高比大于1.5就基于高度缩放,反之基于宽度缩放,非常之方便。
3.ConstrainedOnMobiles:是以上两种的结合,当程序运行在[Android][iOS]等移动设备上时,使用Flexible模式,其他情况下使用Constrained模式。因在移动设备中PixelPerfect模式不常用。
UICamera
UICamera 组件的作用是:让带有这个组件的摄像机渲染出来的物体能够接受 NGUI 事件。如果我们自己创建了一个物体,并且希望对这个物体使用一些 NGUI 中的事件,比如 OnPress()、OnDrag() 等,就需要为渲染这个物体的摄像机添加 UICamera 组件。
UIPanel
Depth 深度,在 NGUI 中,Panel 有 Depth,Widget 也有 Depth,Depth 将决定渲染的顺序,直接影响了 UI 之间的的前后重叠关系。但是 Panel 的 Depth 权重要远远高于 Widget。
当你有多个 Panel 的时候,比如你制作了多个面板界面,每个界面都有一个 Panel ,那么此时尽量保证这些 Panel 不要共用同一个 Depth,因为这将会导致 NGUI 在渲染的时候无法以 1 个 DrawCall 完成,会以增加 DrawCall 的方式来保证渲染顺序不混乱,这样就增大了性能的开销。Clipping 是遮罩裁剪。
None:无裁剪模式,没有裁剪,也没有边界的。
SoftClip:柔和裁剪模式。
Constrain but don't Clip:panel会尽量地包含所有的内容,但是不剪辑它们。
Render Queue 可以理解为渲染顺序,默认为自动设置。这个选项在和粒子系统结合使用的时候会有影响。
在 NGUI 中,渲染的层级关系是由 Depth 决定的,但是最本质的还是由渲染的 Render Queue 决定的,这是一个 Shader 中常见的参数。在 NGUI 中,每一个 Panel 上也有一个 RenderQ 的设置项,RenderQ 越高的将会越在上层显示。粒子系统的 RenderQ 一般是 3000,所以,如果我们希望粒子处于两个 Panel 之间,只需要将其中一个 Panel 的 RenderQ 改为 StartAt 模式,将值设为 3000 以下的值,然后将另外一个 Panel 的 RenderQ 设为 3000 以上的值,就可以让粒子在两个 Panel 之间显示了。