NGUI第七课--关于UIRoot的一些小知识
在前面的课程中,我们还未深入探讨过 NGUI 最顶层的 UIRoot。相信大家或多或少对它存在一些疑问,今天就为大家详细讲解 UIRoot 的相关知识。
UIRoot 概述
当我们创建 UI 时,NGUI 首先会显示 UIRoot 及其下方的 UICamera。从界面中可以看到,UIRoot 挂载了 UIRoot 和 UIPanel 两个脚本。这里我们重点介绍 UIRoot,UIPanel 的内容将在后续更新。
UIRoot 始终处于 NGUI 的最上层,其主要作用是简化 UI 缩放操作,让开发者更方便地处理不同分辨率下 UI 的显示问题。
UIRoot 的缩放方式
UIRoot 提供了几种不同的缩放方式,下面为大家详细介绍:
1. PixelPerfect
这是最常见的缩放方式。在这种模式下,UI 始终以像素为基础进行显示。例如,一个尺寸为 500 400 的 widget 在屏幕上始终占用 500 400 像素。这意味着在低分辨率的设备上,UI 会显得较大;而在高分辨率的设备上,UI 则会显得较小。该设置的主要目的是保证 UI 的清晰度。
2. FixedSize
此设置与 PixelPerfect 的功能相反。当 UIRoot 采用 FixedSize 选项时,屏幕会始终保持 NGUI 所关注的尺寸,而不受实际屏幕大小的影响。举例来说,如果一个 300 200 的 widget 在 1920 1080 的屏幕上占用 25% 的显示区域,那么当分辨率降低到 1280 * 720 时,它依然会占用 25% 的屏幕空间。如果开发者不介意 UI 在不同分辨率下看起来大小不同,也不特别关注 UI 的清晰度(可能会出现小 UI 被拉伸的情况),那么可以选择这个选项。需要注意的是,选择该选项时,务必设置 Manual Height。
3. FixedSizeOnMobile
这种模式是前两种方式的组合。选择此选项后,在 PC 或 Mac 等桌面设备上,UIRoot 会采用“PixelPerfect”模式;而在移动设备上,则会使用“FixedSize”模式。
最小和最大高度设置
如果没有选择 Fixed Size 选项,就需要设置 Minimum 和 Maximum Height 的值。这些值用于确保虚拟屏幕的显示范围处于合理区间。例如,当选择了 Pixel Perfect 方式,并将 Minimum Height 设置为 720 时,如果玩家将程序运行在 800 * 600(高度为 600,小于 Minimum Height)的设备上,UI 的显示行为将与设置了“Fixed Size”模式且 Manual Height 值为 720 时相同。
UIRoot 缩放原理提示
UIRoot 以 2 / ScreenHeight 的值进行缩放。这里的 ScreenHeight 可能是实际的屏幕高度(在 Pixel Perfect 模式下),也可能是手动设置的高度(在 Fixed Size 模式下)。这样做的目的是使渲染 UI 的相机的 Orthographic Size 值始终保持为 1,从而确保 UI 渲染的稳定性和一致性。
关闭自动缩放功能
如果开发者不需要 UIRoot 的自动缩放功能,只需直接移除该组件即可。
通过以上介绍,相信大家对 UIRoot 的功能和使用方法有了更深入的了解。在实际开发中,根据不同的需求选择合适的缩放方式,能够让 UI 在各种设备上都能呈现出良好的效果。