NGUI第七课--关于UIRoot的一些小知识

2015年03月20日 10:22 0 点赞 0 评论 更新于 2025-11-21 17:48

在前面的课程中,我们还未深入探讨过 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 在各种设备上都能呈现出良好的效果。

作者信息

menghao

menghao

共发布了 3994 篇文章