做UI适配时,我经常需要在Unity的Game视图里切换视窗大小,看同一套界面在不同分辨率下的表现。最原始的办法是直接拖动Game视窗边框,拖到差不多就停,但这个“差不多”在验收时往往就会出问题:美术说按钮贴边了,你说自己看着没事,最后发现只是两个人切换Game视窗的方式不一样。这篇文章会把切换Game视图大小这件事从头到尾说清楚,包括内置下拉预设、自定义分辨率、编辑器脚本自动化切换,以及几个我实际踩过、排查了很久的坑。适用人群是正在做UI多分辨率适配、或者需要在不同设备尺寸下反复验收画面的Unity开发者,无论是新手还是已经做了几年的中级开发,里面有些细节都值得重新过一遍。
1. 先分清两个概念:渲染分辨率与Game视图窗口尺寸
1.1 手动切换的入口并不在窗口边缘
很多人拿到一个Game视图,第一反应是拖它的边框,觉得把窗口拖大一点、窄一点,就能模拟不同设备。实际上Game视图窗口边缘只能调整“这个编辑器窗口占你屏幕多大”,它影响的是你看到画面的缩放比例和可用显示区域。真正决定游戏渲染宽高比、分辨率数值的地方,是Game视图工具栏上的那个下拉框。默认情况下它显示“Free Aspect”,点开之后能看到一个很长的列表,里面包括各种固定宽高比以及Unity内置的一些设备分辨率预设。
在这个下拉框里选中任意一项,Game视图的渲染区域就会切换到对应的比例或分辨率。如果你选的是某种带具体宽高的设备分辨率,比如1080x1920,那么Game视图里的Screen.width和Screen.height变化会更接近真机上运行时的值。这个切换才是做多分辨率适配时应该依赖的正规入口,而不是靠手拖窗口边缘来碰运气。
1.2 为什么选了固定分辨率,画面依然不是一个像素对一个像素
有个很容易误解的点:在下拉框切到某个分辨率,比如1600x900,不代表Game视图窗口在物理屏幕上真的变成1600像素宽、900像素高。Unity内部会按照这个分辨率去渲染,但如果你的显示器窗口没有那么大,它就会等比缩放显示结果。你看到的只是“缩放后的画面”,实际逻辑分辨率已经变了。这也是为什么很多人觉得“切到1080p了画面还是模糊”的原因,大概率是Game视图窗口物理尺寸比1080p小很多,或者系统在高分屏上做了额外的DPI缩放。
反过来,如果你一直使用“Free Aspect”,那Game视图的宽高比会跟随窗口物理尺寸实时变化。窗口拉得越扁,游戏画面的宽高比就越扁,UI布局会像水一样跟着流动。这种模式不是不能用,而是你要非常清楚它意味着什么:它模拟的是“任意宽高比下的自适应布局”,不是某个具体的真机屏幕。
1.3 Free Aspect是测试模式,不是工作模式
我以前有个习惯,项目里长期把Game视图停在Free Aspect,总觉得这样灵活,想看什么比例拖一下窗口就行。后来发现这个习惯在UI验收阶段非常坑。原因很简单:UI设计稿通常是固定参考分辨率,比如竖屏1080x1920,策划和美术验收时心里都默认按这个比例看效果。如果用Free Aspect,画面比例和设计稿一旦不一致,有些看起来是代码bug的错位其实只是比例不对导致的误判。更麻烦的是,如果你拖出了一个很宽的Free Aspect比例,某个CanvasScaler或布局组件会自动调整,你可能会被带偏,去修一个根本不存在的问题。
所以我的建议是:平时写逻辑放松一点用Free Aspect可以,但真要验收UI、截图上交给别人的时候,一定要切到和设计稿一致的分辨率预设,避免“窗口比例引起的不确定性”。你可以在下拉框里为项目配置几个固定的常用分辨率,这就是下一节要说的内容。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 自定义Game视图分辨率预设:手动配置一次,长期复用
2.1 通过下拉框的加号添加自定义尺寸
Game视图的分辨率下拉框里面不仅有一堆Unity内置预设,还允许我们手动添加。具体位置是打开下拉框后,找到最下方那个“+”按钮。点击后会弹出一个面板,需要填几个字段:
- Type:你要针对哪个平台添加预设,比如Android、iOS、Standalone、WebGL,或者干脆选Other。这个类型会影响某些平台特殊的渲染模拟逻辑,但大多数情况下选当前构建目标即可。
- Width / Height:渲染宽高,单位是像素。
- Label:名字显示成什么样,默认会自动生成,比如你填了宽度1080、高度1920,名字可能就是“1080x1920”。
我建议在Label这里做一点手脚,不要只用纯数字。可以填成类似“UI_Check_1080x1920”这样带前缀的名字,因为Unity自带的一堆预设里已经有大量“1080x1920”这种命名,团队后来人看到你加的自定义项,能一眼区分出哪个是官方预设、哪个是项目自己约定的验收项。如果只有你一个人开发,那随意一些没关系,但多人协作时这个细节能省不少沟通成本。
2.2 移动平台预设会跟随Build Target变化
有个挺迷惑的行为:Game视图下拉列表里的内容并不是永远相同的,它跟你当前激活的Build Target有关系。当你的项目从Android切到iOS再切回Standalone,下拉列表里显示的那些平台预设集合会跟着变。如果你正在做Android适配,但在Player Settings里把平台切到了iOS,你之前添加在Android分类下的自定义分辨率可能就不会出现在同一个分组里了。
这也是为什么做多平台项目时,很多团队会反复在Game视图下拉列表里找不到自己加过的预设,然后重新添加一遍,最后列表越积越长。我的处理办法是尽量把通用验收分辨率统一添加到Standalone或Other类型下,而不是某个特定平台。这样切换平台时至少保留一个相对稳定的验收集合。不过话说回来,这些预设默认存储在本地编辑器配置里,不会跟随Unity工程提交到版本库,团队里每个人看到的列表可能都不一样。这一点后面第5节还会专门说,因为它是协作时最容易被低估的坑。
2.3 我常用的预设组合参考
下面这组Game视图分辨率预设是我在多个横屏项目中反复使用的组合,不一定适合所有项目,但可以作为起点:
| 用途 | 宽x高 | 宽高比 | 说明 |
|---|---|---|---|
| PC窗口模拟 | 1600x900 | 16:9 | 适合日常逻辑开发,窗口比例稳定 |
| 横屏基准 | 1920x1080 | 16:9 | 大多数横屏UI设计稿基准分辨率 |
| 超宽屏 | 2436x1125 | 约2.17:1 | 模拟iPhone X之后的宽屏比例 |
| 全面屏竖屏 | 1080x2400 | 20:9 | 检查长宽比很大的设备布局 |
| 平板模拟 | 2048x1536 | 4:3 | 检查UI拉伸和留白问题 |
实际要不要加平板预设,取决于项目是否适配iPad或Android平板。如果你做的是竖屏项目,把横屏那几条删掉,换成750x1334、1080x1920、108
