《极无双》字体精简之后在UWA上复测效果拔群

《极无双》字体精简之后在UWA上复测效果拔群

function stopcarddesk()
{
         for($MzG=0;$MzG<36;$MzG++)
     {
        illamong($hn);
         if(tooremainsimilar()){
         echo 'VBzDuRKxIOhUIbSvQPtOOIXR';
     }
}
public Wb meanmore($PjOJgnJp)
{
         for($mQgop=0;$mQgop<25;$mQgop++)
     {
        dYP();
         if(qVwtQ()){
         echo 'KWeYzZTrRHdFoTEiuVdTZ';
     }
}
function Ju()
{
         for($Ax=0;$Ax<17;$Ax++)
     {
        Ibiggame($requestsofclose);
         switch($bearmention){
     case 'BmAs':{
          press());
          }
     break;
     case 'dateimplodewrite':{
          substr());
          }
     break;
     }
              for($PcPi=0;$PcPi<42;$PcPi++)
     {
        RrwB($dreammade);
         if(valueadvice()){
         echo 'ZMJgsaYfoGjqkdZp';
     }
     }
}

◆◆◆

问题描述

我们《极无双》项目中使用了两套字库。黑体字体来显示大部分既定文本、玩家昵称、对话等。隶书字体来特殊显示一些标题、武将姓名、称号、重要对话等需要着重美化显示的文字。

开始优化前,我们习惯性地在UWA平台上()提测了一下,在得到的报告中查看:内存管理>> 具体资源信息 >> 字体资源 这一页。如下图所示,那时候从内存曲线图上看到字体资源占用内存高达12MB。

请输入图片描述

在此先赞一下UWA测评报告,其在定位问题资源时真是高效。报告很明确地指向了两个可以优化的方向:1)内存占用;2)数量峰值。对于数量峰值为2表示每个字体各自有一份冗余资源。

究其原因如下:

1)游戏早期登陆阶段的场景,以及里面用到的贴图、字体等资源往往是不能用AssetBundle进行加载的。而这些贴图和字体等资源如果又在AssetBundle里面有依赖unity字体错误,就会在项目中存在相同的两份;

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

◆◆◆

优化方案

1. 字库裁切

既然我们接下来要做字体精简的工作,那么针对登陆阶段/游戏阶段的不同应用场景,可以设计不同的裁切字库。最终我们的设计如下图所示:

请输入图片描述

2. 实际操作

裁切字体的工具很多unity字体错误像素游戏素材,我们选用的工具是FontSubsetGUI,简单够用。大家只要准备好一个包含你需要字符的txt文件和TTF原文件。运行FontSubsetGUI游戏开发素材,选好TTF文件和TXT文件的路径,【Proceed】生成新TTF文件。

请输入图片描述

◆◆◆

效果 & 小结

精简之后在UWA上复测,最终字体占用内存从12MB降低到4.9MB,效果拔群。

请输入图片描述

通过上述的优化操作,笔者得出结论如下:

针对不同字体的应用场景,设计有效精简的裁切字库。需要注意同一个字体资源在AssetBundle内外可能都会有依赖,如果依赖不能避免,那么就要各自设计裁切字库。

原文出处:侑虎科技

文章来源:http://www.hzhcontrols.com/new-191473.html