说了那么多课,还没有讲过NGUI最顶层的UIRoot的知识,哈哈哈,大家不知会不会有些什么问题呢?今天就给大家讲讲这个吧。。。


首先,当我们Create UI的时候,我们NGUI首先给我们显示的是UIRoot还有下面的UICamera。我们从上图可以看到UIRoot挂着UIRoot和UIPanel两个脚本。现在我们来说说UIRoot。(至于UIPanel明天再更新了,夜已深,程序猿一个周末不容易,不加班不容易,还是好好睡觉吧..........还是说整体要紧)
UIRoot总是被放在NGUI的最上层。它用来使UI缩放变得更容易。

UIRoot有几种缩放方式。最常见的就是PixelPerfect。这种方式下,你的UI一直都是以像素为基础,一个500*400的widget在屏幕上永远占用500*400像素。这就意味着,你的UI在低分辨率的机器上会显得非常大,在高分辨率的机器上就会显得很小。这个设置就是一直保持你的UI清晰。

FixedSize是一个和它功能正好相反的设置。当UIRoot用了这个选项,你的屏幕永远都会保持NGUI所关心的尺寸,不管你的实际屏幕是多大。就是说一个300*200的widget占用了你1920*1080的25%的屏幕,那么当分辨率降低到1280*720的时候,它同样占用25%的屏幕。如果你不介意你的UI看起来像是不同的尺寸,也不关心是否清晰(就是可能一个小的UI被拉伸很大),那么选择这个选项。选择它的时候,不要忘记设置Manual Height。

FixedSizeOnMobile是前两种的组合。选择这个选项后,会在pc或者mac等桌面设备上用“PixelPerfect”,在移动设备上用“FixedSize”。

如果你没有选择Fixed Size选项,那就要设置Minimum和Maximum Height的值。这些值让你的虚拟屏幕看起来在合理范围。比如选择了Pixel Perfect方式,Minimum Height设置为720,那么当有玩家把你的程序运行在800*600(高度是600,小于Minimun Height)的设备上时,你UI的行为就和设置了“Fixed Size”模式、Manual Height值设为720的时候一样。

Tip:UIRoot以2/ScreenHeight的值进行缩放。ScreenHeight可能是实际的屏幕高度(Pixel Perfect),也可能是manual height(Fixed Size)。这样做的目的是使渲染UI的camera的Orthographic Size的值一直使用1。
如果你不需要UIRoot的自动缩放功能,直接去掉这个组建。