1.2 设备描述文件与伸缩性:一套代码适配千百机型
一套素材,多档画质
UE 处理碎片化的核心是设备描述文件(Device Profile)+ 伸缩性(Scalability):
- 同一个材质/贴图资产有多档 LOD、纹理流送上限、材质质量等级
- 每个机型匹配一个 Device Profile,引擎自动套用对应档位的 ConsoleVariable
- 设置入口见「设置设备描述」(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/setting-up-device-profiles-in-8c00)与「自定义设备描述和伸缩性」(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/customizing-device-profiles-an-ebac)
工作机制
设备 → CVars(r.Mobile.* 一系列开关)→ 渲染管线
↑
DeviceProfile(机型匹配:GPU/内存/系统版本)
UE 内置了一套默认 Profile(Android_Low/Medium/High、iOS 系列等)。你可以:
- 直接用内置分档:在项目设置里给 Device Profile 配质量组(纹理 LOD、阴影、后处理等)
- 自定义 Profile:对具体机型单独建 Profile + 匹配规则
质量组:一次配置全局生效
Device Profile 的质量组涵盖纹理质量、阴影质量、后处理、材质质量、粒子 LOD 等。正确做法是按档位批量配 CVar,而不是一台台机器调:
[Android DeviceProfile]
+CVars=r.MobileContentScaleFactor=1.0
+CVars=r.Mobile.AmbientOcclusion=0
+CVars=r.StaticMeshLODDistanceScale=1.2
Lyra 示例工程就是标准参考(「Lyra 可扩展性和设备描述」https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/scalability-and-device-profile-fec4)。
我的分档经验
三档足够(别搞五档,调不完):
| 档位 | 目标机型 | 目标表现 |
|---|---|---|
| Low(保守档) | 内存 3GB 上下 / GPU 中低 | 稳定 30fps,画质大幅简化 |
| Medium(主流档) | 中端机(发行主要占比) | 稳定 30fps,中画质 |
| High(高效档) | 旗舰机 | 60fps(动态分辨率兜底) |
分档的三个坑:
- 划分依据用「跑分」而不是「价格」:同价位不同代 CPU/GPU 差异很大
- 驱动差异大的老机型单列 Profile:渲染 bug 常集中在「GPU 型号 × 驱动版本」交叉上
- 低档不是「砍到能跑」:Low 档的美术标准要从立项就定,后期降级美术成本极高
分辨率缩放系数
移动端最有效的单 knob:
r.MobileContentScaleFactor=1.0 ; 1080p 设备渲染分辨率等于屏幕;0.7 大致 75% 分辨率
高端机开 1.0,中端 0.7~0.8,低端 0.5——肉眼差异比想象小,帧率提升比想象大(3.2 节细讲动态分辨率)。
测试矩阵
分档做完要真机验证矩阵:每档至少 3 台真机(低/中/高端各一)跑「15 分钟压力场景」。模拟器/预览器(「使用移动预览器」https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/using-the-mobile-previewer-in-ea79)只能查配置对错,不能替代真机性能。
心得:分档的关键是「承认自己没法为所有机器做到最好」。把 80% 玩家的中端机做到稳定流畅、高端机敢开 60、低端机能进得去不闪退,就是优秀的移动端适配。
