Unity优化中,字体大小优化是非常重要的一项。
一个包含常用汉字的ttf字库,一般在10MB以上。
直接放到安装包中的话,会造成极大地浪费。

裁剪

裁剪主要是针对ttf体做个筛选,从庞大的字库中,拣选部分我们需要的文字,然后生成一个较小的字体库。

工具方面,可以选择网上很多人推荐FontSubsetGUI和FontPruner,这个前辈写了比较详细的操作流程,两款软件各有利弊吧。也有前辈对FontSubsetGUI的字体裁剪结果提出了质疑关于字体剥离和精简工具 FontSubsetGUI 和 FontPruner 的比较。

这里我推荐一款fontsmaller,这个才是真正的极简,不用安装什么环境,操作界面都没有,双击打开,选中TTF,输入要裁剪的文本就完事了。裁剪出来的大小也比较理想。

一般情况下,这三款裁剪出来的大小差距不大,我们选取3000常用字,裁剪字体后,字体一般在4-5M。(参与过的某个项目在国外运营,只要求英文环境,也就是只需要unicode字符,裁剪后只有40Kb左右)

NGUI字体剥离(很少用)

某些项目使用的是打包方式是强制引用(BuildAssetBundleOptions.CompleteAssets),这导致多个Bundle包引用的字体被强制拉到各个Bundle中,造成大量的“冗”。(字体资源十分特殊,极易被多个Bundle引用)。
为了解决这个问题,又不造成大量的代码修改。打包时可以将每个UILabel引用的UIFont名称记录(记录到预制体上,方便复原),然后的UILabel.bitmapFont全部置为null(丢失引用后,就不打包),最后将所有引用到的字体统一存放的一个公共位置,(比如CommonModel之类的地方建一个公共字体库)。
具体界面加载时,再将字体通过名字在公共字体库中进行“查表”复原,如此便可去掉每个界面的字体“冗”

字体异常丢失问题(应急手段)

字体折腾来折腾去,打包出去发现全没了,短时间又找不到原因怎么办(把自己坑吐血)。

打包前执行下这个方法,将所有的字体全部改为动态字库。

bb is weak show u code

private static void SetFontDependence(bool contain){var Fonts = AssetDatabase.FindAssets("t:Font");int count = Fonts.Length;for (int i = 0; i < count; ++i){var path = AssetDatabase.GUIDToAssetPath(Fonts[i]);var font = AssetImporter.GetAtPath(path) as TrueTypeFontImporter;if (font != null){font.includeFontData = contain;}}AssetDatabase.SaveAssets();AssetDatabase.Refresh();}

关键代码是
font.includeFontData = true。具体请参考http://www.manew.com/youxizz/2926.html

If this is enabled, the actual font will be embedded into the asset for Dynamic fonts.
如果这个被启用,实际字体将嵌入到资源中,用于动态字体。
When you disable this, the user must have the font installed in his system to use it.
当这个禁用,用户必须在他的系统安装这个字体。

Unity性能优化之字体裁剪相关推荐

  1. Unity性能优化之字体篇

    使用引擎:Unity 使用软件:FontSubsetGUI,FontCreator 前言 首先我们要知道Unity导出安装包时是把游戏场景所应用的资源打包导出,而字体就是其中的一种,但Unity使用的 ...

  2. 第一章:unity性能优化之内存优化

    目录 前言 unity性能优化之内存的优化 一.unity Analysis工具的使用. 二.内存优化方法 1.设置和压缩图片 2.图片格式 3.动画文件 4.模型 5.RenderTexture(R ...

  3. 【Unity性能优化】静态资源优化——Audio优化

    文章目录 写在前面 1. 前言 2. 使用Asset Checker进行资源检测 3. Audio优化 3.1 启用Force to Mono 3.2 压缩格式与采样率 3.3 音乐加载类型 3.4 ...

  4. Unity 性能优化(力荐)

    开始之前先分享几款性能优化的插件: 1.SimpleLOD : 除了同样拥有Mesh Baker所具有的Mesh合并.Atlas烘焙等功能,它还能提供Mesh的简化,并对动态蒙皮网格进行了很好的支持. ...

  5. Unity性能优化分析思路

    1)Unity性能优化分析思路 ​2)Unity2020后Paticle子节点旋转并把ScalingMode设置为Hierarchy后,对根节点进行缩放时表现不正常 3)FBX默认会冗余lit.mat ...

  6. Unity性能优化 – 脚本篇

    最近开始进行Unity性能优化的工作,主要分为三类:CPU.GPU和内存.由于我们游戏的核心战斗是计算密集型,所以主要是受限于CPU.CPU的优化又分为渲染和脚本,本文将着重于脚本优化. 一般来说,优 ...

  7. Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译

    http://www.cnblogs.com/alan777/p/6135703.html Unity性能优化(2)-官方教程Diagnosing performance problems using ...

  8. Unity性能优化 :合批篇

    前言 本系列为一些性能优化的小知识,是日常游戏开发中与性能表现的一些点,本篇为该系列文章的第二篇,前篇链接: 第一篇: Unity性能优化:资源篇 在早期Unity中,对于合批的处理手段主要是下面三种 ...

  9. Unity 性能优化:资源篇

    Unity性能优化 大的方面来说,通过Unity对于项目的性能优化大概可以分为下面几个部分: 资源 渲染 程序 项目配置 而在这个部分中,资源的性能优化属于最基础.最有效的优化手段,也是游戏开发者日常 ...

最新文章

  1. c语言输入学生成绩q退出,哭诉、拜求C语言学生成绩管理系统
  2. 用命令行CMD .bat 相关操作 如: 创建快捷方式 复制文件等
  3. 编译Android VNC Server
  4. 【MFC系列-第23天】CMemoryDC的封装过程
  5. sdut 最少拦截系统
  6. prim——最小连接路径和(hdu1301)
  7. SkinSharp用法
  8. callback 模式
  9. 一天赚148万元,科大讯飞2018年净利润达5.42亿,但53%为政府补助
  10. 【iOS】Scale Fill、Aspect Fit 和 Aspect Fill 的区别(Content Mode)
  11. C#版常用设计模式入门
  12. xci转nsp工具_【ns新系统11.0.0发布】安装工具已经更新至4.2【后面附上批处理内容修改】...
  13. Tableau学习教程(万字保姆级教程)​​​​​​
  14. 记账一定要读财务专业吗
  15. 基于GD32F1x0手动编程实现简易freertos之任务阻塞延时
  16. Travel around the UK
  17. C++实现http客户端连接服务端及客户端json数据的解析
  18. 中国真正的毒奶粉在哪
  19. 关于禅道二次开发的分享
  20. 【图像分类损失】Encouraging Loss:一个反直觉的分类损失

热门文章

  1. 明星热图|刘诗诗、倪妮出席品牌活动;王一博、任嘉伦、龚俊等签约新品牌成为代言人...
  2. 如何在win10中安装jdk
  3. games202:三,实时环境光照IBL + PRT
  4. 关于2进制与十六进制的转换;C语言
  5. 云服务器选股,【图】老师们能不能在通达信7.48中整合云行情服务器?_选股公式,股票,炒股公式,股票指标,股票论坛_股票软件技术交流论坛_理想论坛 - 股票论坛...
  6. Chrome不清空历史记录直接删除地址栏记录的方法
  7. python学习(25) BeautifulSoup介绍和实战
  8. 利用计算机网络实现OA的功能,oa系统是什么,oa系统功能介绍
  9. keypair java_Java KeyPairGenerator generateKeyPair()用法及代码示例
  10. 关于美国安利的真实情况 !!!!!