《极无双》团队对于字体裁切的思路和方法介绍

《极无双》团队对于字体裁切的思路和方法介绍

在游戏开发过程中,为了美观的UI界面和一致的显示效果,大部分游戏都会使用动态字体来表示文字。尤其是在这个看脸的时代,一种字体已经不能满足UI同学的审美需求。因此,我们经常会发现几个字体文件,从 2 到 3 兆字节到大的。这些文件同时占用包体和内存。因此,字体的合理使用和优化就成为了项目后期优化中不可缺少的一步。下面介绍一下《极无双》团队进行字体切割的思路和方法。

◆◆◆

问题描述

我们在“极无双”项目中使用了两组字体。粗体显示大部分既定文字、玩家昵称、对话等。隶书字体用于显示一些头衔、将领姓名、头衔、重要对话等需要高亮显示的文字。

unity字体集_unity设置不同字体_米芾字体集字书法作品欣赏

在开始优化之前,我们习惯性的在UWA平台()上进行了测试,查看了得到的报告:内存管理>>具体资源信息>>字体资源这个页面。如下图所示3D道具,当时我们从内存图中可以看出,字体资源占用内存高达12MB。

请输入图片描述

我们先来看看西澳大学的评估报告,它在定位问题资源方面确实很高效。该报告明确指出了两个可以优化的领域:1)内存使用; 2)数量激增。该数字的峰值为 2 意味着每种字体都有自己的冗余资源。

原因如下:

unity设置不同字体_米芾字体集字书法作品欣赏_unity字体集

1)游戏早期登录阶段的场景,以及其中使用的贴图、字体等资源,往往无法用AssetBundle加载。而如果这些纹理和字体等资源在AssetBundle中有依赖像素游戏素材,那么项目中就会有两个完全相同的副本;

2)内存使用很好理解。基本上,字体的磁盘容量等于内存使用量。

◆◆◆

优化

unity字体集_unity设置不同字体_米芾字体集字书法作品欣赏

1. 字体修整

由于接下来需要对字体进行简化,我们可以针对登录阶段/游戏阶段的不同应用场景设计不同的裁剪字体库。我们的最终设计如下所示:

请输入图片描述

2.在行动

unity设置不同字体_米芾字体集字书法作品欣赏_unity字体集

有许多用于切割字体的工具。我们选择的工具是FontSubsetGUIunity字体集,很简单。只需准备一个包含您需要的字符的txt文件和TTF原始文件。运行FontSubsetGUI,选择TTF文件和TXT文件的路径,【继续】生成一个新的TTF文件。

请输入图片描述

◆◆◆

效果与总结

unity字体集_米芾字体集字书法作品欣赏_unity设置不同字体

精简后在UWA上重新测试,最终字体大小从12MB缩小到4.9MBunity字体集,效果出众。

请输入图片描述

通过以上优化操作,作者得出以下结论:

根据不同字体的应用场景,设计了一个高效、精简的裁剪字体库。需要注意的是,同一个字体资源可能在 AssetBundle 内部和外部都有依赖关系。如果无法避免依赖,则需要单独设计裁剪字体库。