Files
obsidian-notes/InBox/TMP字体Atlas内存优化实战.md
Build Bot f7310caea0 同步
2026-05-18 01:20:38 +08:00

52 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: TMP字体Atlas内存优化实战
source: https://mp.weixin.qq.com/s/iPSxQvg-riGh66efHlSyLA
author: 侑虎科技
date: 2026-05-06
tags: [Unity, TMP, 内存优化, Atlas, UWA]
---
# 【厚积薄发】从64MB降至5MBTMP字体Atlas内存优化实战
> 来源UWA公众号 - 第474篇UWA技术知识分享
## 实战案例一字体Atlas双实例冗余 + RW动态图集内存过高
**问题:** GOT Online报告显示项目游戏字体Atlas出现双实例冗余且开启RW动态图集内存占用过高。
**原因:**
- 字体Atlas实例数量为2通常是因为该字体既在初始包中的初始场景中被引用又在后续AssetBundle资源中重复引用
- RWRead/Write Enabled开启导致CPU和GPU各存一份内存翻倍
**解决方案:**
1. 将初始场景中使用的字符单独创建对应的小字体,避免初始场景中有大图集和大字体的引用
2. 预先收集游戏的大部分字符集将Atlas设置为**静态图集配置**可减少16MB占用
3. 不在静态图集中的字符通过TMP的**Fallback机制**设定一个小分辨率如512×512的动态Atlas进行字符补充
## 实战案例二TMPAsset内嵌Atlas纹理无法压缩
**问题:** TMPAsset内嵌Atlas纹理属于子资源无法单独进行纹理压缩参数配置。
**解决方案Editor脚本改造**
1. 通过Editor编辑器脚本对该纹理进行独立复制
2. 将TMPAsset材质球关联替换为复制后的新纹理
3. 移除原TMPAsset内的内嵌纹理
4. 剥离后的独立纹理可自由配置压缩格式ASTC6×6、ASTC8×8等进一步降低内存开销
5. 真机测试:压缩后文字美术表现无明显差异
## 优化前后对比
| 项目 | 内存 |
|------|------|
| 优化前 | **64MB** |
| 优化后合计 | **4.75MB** |
| 初始场景 512×512 静态图集 | 0.25MB |
| 4096×4096 静态图集ASTC8×8 | 4MB |
| Fallback兜底纹理 512×512Alpha8 | 0.5MB |
## 相关资源
- UWA社区community.uwa4d.com
- UWA官网www.uwa4d.com
- UWA学堂edu.uwa4d.com
- QQ群793972859