同步最新
This commit is contained in:
@@ -1,51 +0,0 @@
|
||||
---
|
||||
title: TMP字体Atlas内存优化实战
|
||||
source: https://mp.weixin.qq.com/s/iPSxQvg-riGh66efHlSyLA
|
||||
author: 侑虎科技
|
||||
date: 2026-05-06
|
||||
tags: [Unity, TMP, 内存优化, Atlas, UWA]
|
||||
---
|
||||
|
||||
# 【厚积薄发】从64MB降至5MB,TMP字体Atlas内存优化实战
|
||||
|
||||
> 来源:UWA公众号 - 第474篇UWA技术知识分享
|
||||
|
||||
## 实战案例一:字体Atlas双实例冗余 + RW动态图集内存过高
|
||||
|
||||
**问题:** GOT Online报告显示,项目游戏字体Atlas出现双实例冗余且开启RW动态图集内存占用过高。
|
||||
|
||||
**原因:**
|
||||
- 字体Atlas实例数量为2,通常是因为该字体既在初始包中的初始场景中被引用,又在后续AssetBundle资源中重复引用
|
||||
- RW(Read/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×512(Alpha8) | 0.5MB |
|
||||
|
||||
## 相关资源
|
||||
- UWA社区:community.uwa4d.com
|
||||
- UWA官网:www.uwa4d.com
|
||||
- UWA学堂:edu.uwa4d.com
|
||||
- QQ群:793972859
|
||||
Reference in New Issue
Block a user