首页 > 其他分享 >如何精简Unity中使用的字体文件

如何精简Unity中使用的字体文件

时间:2022-08-31 16:15:25浏览次数:83  
标签:裁切 Unity 字库 内存 精简 字体 资源

http://t.zoukankan.com/lancidie-p-6285569.html

 

◆◆
问题描述

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

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

 

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

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

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


◆◆
优化方案

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

 

2. 实际操作
裁切字体的工具很多,我们选用的工具是FontSubsetGUI,简单够用。大家只要准备好一个包含你需要字符的txt文件和TTF原文件。运行FontSubsetGUI,选好TTF文件和TXT文件的路径,【Proceed】生成新TTF文件。

 


◆◆◆
效果 & 小结

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

 

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

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

标签:裁切,Unity,字库,内存,精简,字体,资源
From: https://www.cnblogs.com/nafio/p/16643412.html

相关文章

  • Web字体简介_TTF_OTF_WOFF_EOT以及SVG
    Web字体简介_TTF_OTF_WOFF_EOT以及SVG字体格式有太多选择,不幸的是始终没有一个能在所有的浏览器上通用。这意味着,你必须使用多种字体的方案来保持用户跨平台的一致性体......
  • CentOS CentOS是免费的、开源的、可以重新分发的开源操作系统 [1] ,CentOS(Community E
    CentOS_百度百科 https://baike.baidu.com/item/centos/498948?fr=aladdinCentOS是免费的、开源的、可以重新分发的开源操作系统 [1]  ,CentOS(CommunityEnterprise......
  • 如何将MMD镜头导入Unity
    最近懒得K动作和镜头了,想着把其他大佬做的动作和镜头拿来玩玩。虽然导入MMD动作的教程随便搜就能找到(MMD->Blender->FBX->Unity),但是关于导入镜头的教程好像特别少。网上......
  • 种类并查集 把find变成查索引 unity变成x是y的
    真假英雄http://oj.saikr.com/contest/20/problem/K在一个小镇上,很多人都患了一个精神病,他们都认为自己是“英雄”或者“反派”中间的一种,“英雄”觉得自己是正义的一方,......
  • 【Unity学习笔记】Transform—游戏物体的缩放和看向
    1.缩放相关usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassLesson8:MonoBehaviour{voidStart(){......
  • Unity中的宏定义
    有时候我们需要使用区分不同平台来实现不同的逻辑,这个时候就用到宏定义了基本语法#ifUNITY_EDITOR_WIN||UNITY_STANDALONE#elifUNITY_ANDROID#else......
  • UnityEditor Undo
    最重要的几项操作如下所述:修改单个属性:Undo.RecordObject(myGameObject.transform,"ZeroTransformPosition");myGameObject.transform.position=Vector3.zero;......
  • IDEA ,设置滚轮修改字体大小
    默认情况下,在编辑器,我们不能通过设置滚轮修改idea的大小。1.点击菜单栏【File】→【Setting】(或快捷键【Crlt+Alt+S】)打开Setting。2.勾选【Editor】→【General】......
  • Unity-单例模板
    普通单例模板publicabstractclassSingleton<T>whereT:new(){privatestaticTinstance;publicstaticTInstance{get{if(i......
  • Unity 笔记UnityXR简单使用
    插件导入:打开PackageManager添加XRInteractionToolki添加XRPluginManagement5.PS:如果PackgeManager找不到上面的插件,可以按照下图更改筛选条件。(感谢小pp侠提出意见)......