一、Unity导入三方字体

导入字体文件

要在项目中添加字体,必须将字体文件放在 Assets 文件夹中。然后,Unity 会自动将其导入。支持的字体格式为 TrueType 字体(.ttf 文件)和 OpenType 字体(.otf 文件)。

二、踩坑和填坑

在实际使用中我们发现字体文件导入后References to other fonts in project 内有一堆不知所谓的引用内容。如下图:

而这些内容有时候会导致一些奇怪的报错(因为项目做了资源分包方案)。

然后本人开始查阅Unity官方API,然后从API中得知Unity动态字体设置:

动态字体

Import Settings 中将 Characters 下拉选单设置为 Dynamic 时,Unity 将不会预先生成包含所有字体字符的纹理。取而代之的做法是,它将使用 FreeType 字体渲染引擎来即时创建纹理。这样做的好处是它可以节省下载流量和纹理内存,特别是使用通常包含在用户系统中的字体时(这种情况下不必包含字体数据),或者需要支持亚洲语言或大型字体大小时(这种情况下使用普通字体纹理可能使字体纹理非常大)。

当 Unity 尝试使用动态字体渲染文本但无法找到字体时(因为未选择 Include Font Data__,并且用户计算机上未安装该字体),或者字体不包含请求的字形时(例如尝试使用拉丁字体在东亚脚本中渲染文本时,或者使用粗体/斜体字形文本时),它将尝试 Font Names__ 字段中列出的每种字体,从而查看是否可以找到与项目中的字体名称匹配的字体(包含字体数据)或者用户计算机上安装的字体是否具有请求的字形。如果找不到列出的后备字体或者这些字体不具有所请求的字形,Unity 将回退到硬编码的全局后备字体列表,其中包含当前运行时平台上通常安装的各种国际字体。

请注意,有些目标平台(WebGL 和有些游戏主机)没有可供 Unity 访问以渲染文本的操作系统默认字体。对于这些平台,将忽略 Include Font Data 设置,并会始终包含字体数据。所有要用作后备字体的字体都必须包含在项目中,因此如果需要渲染国际文本或是字体的粗体/斜体版本,则需要在项目中添加一个具有所需字符的字体文件,并在其他字体的 Font Names 列表中设置该字体,这样应该就会将该字体用作后备字体。如果字体设置正确,则后备字体将在字体导入器 (Font Importer) 检视面板中列出,显示在 References to other fonts in project 下。

此时由上图可以看出Font Names中并没有那么多字体引用但是下面的引用项中会有很多引用。此时,我陷入了短暂的迷茫:“这怎么和说好的不一样?”。第一反应是是不是Unity的版本BUG,因为本人项目之前升级过Unity版本,所以我打开之前的项目查看一下,结果发现问题是一样的。所以我觉得应该换一个思路想一想问题。

于是经过直接对比字体文件发现如上几个字体文件实际上是同一个字体文件改成不同名字导入到Unity内部引发的内部引用问题(这里该打死导入字体的人)。把异常(命名错误)的字体库删除然后Reset并且Apply一下,重新打包引用恢复正常。

三、总结下内容

在Unity引用三方字体库(.ttf|.otf)时,如果存在多个字库文件引用相同名字字体库时Unity内部维护他们的引用关系(使用AssetDatabase.GetDependencies方法可以验证该内容),并且在References to other fonts in project中会有显示如果没有同名字体库,则如果在Font Names中添加正确的已导入字体库名字时References to other fonts in project中会有显示该内容并且会在meta文件的fallbackFontReferences引用中存在该内容以及字库meta文件的guid。

引用的官方API地址:字体 - Unity 手册

【Unity】对Unity引用三方字体的踩坑日志相关推荐

  1. android 字体文件压缩,Android 字体使用踩坑指南

    Android 字体使用踩坑指南 最近项目改版,根据ui的设计,需要使用到三字体.在使用过程中遇到一些坑,于是有了这个避坑指南! 字体压缩 第一个坑!字体库的体积太大. 字体压缩的前提是要使用的内容是 ...

  2. 小程序踩坑日志(一)

    微信小程序踩坑日志 起步 申请账号 查看AppID-"设置"-开发设置 小程序的appid相当于小程序平台的一个身份验证 安装开发者工具https://mp.weixin.qq.c ...

  3. 数据挖掘实战(3)——时间序列预测ARIMA模型(附踩坑日志)

    文章目录 1 导包 2 数据准备 3 可视化 4 构建ARIMA模型 5 预测 6 踩坑日志 1 导包 import numpy as np import matplotlib.pyplot as p ...

  4. opensuse 装机踩坑日志

    前提:上次自己制作的centos服务器因为各种原因导致定时任务无法正常运转,另外centos自身的问题,想着趁着这次机会换一个稳如老狗的系统,从debian和opensuse中最终选择了opensus ...

  5. 踩坑日志1----从zuulFilter到Filter

    踩坑缘起: 项目里面一直在线程的上下文里面放着一些用户的信息,之前测试的时候直接放在了接口的最前面,这次有时间把中间的逻辑终于捋清楚了,涉及到了SpringCloud的zuul以及filter,把这中 ...

  6. Unity 射线与碰撞范围检测【踩坑记录】

    射线检测 射线检测在2D和3D的区别比较大 一定要加上对应的Collider组件 对应的函数只检测对应的Collider,Physics.Raycast是不会检测到Collider 2D的(这个让我有 ...

  7. Unity Spine 3.8 (URP) 踩坑(Shader报错修改)

    今天搜索spine优化,看到一篇文章项目导入多个Spine动画 合批 降低DrawCall -- UWA问答 | 游戏开发者互动问答社区 | 侑虎科技 提供了新思路,打算尝试一下URP.但美术使用的s ...

  8. html移动端最小字体大小,踩坑之移动端显示字体大小问题

    踩到的第一个坑: 最近做一个移动端的h5,一开始拿到设计稿后,发现有几个区域字体换算之后在iphone6上是小于12px的,就有一个问题了,谷歌对小于12px的字体,是不做处理的.按理说,设计上应该要 ...

  9. html5 移动端字体问题,踩坑之移动端显示字体大小问题

    踩到的第一个坑: 最近做一个移动端的h5,一开始拿到设计稿后,发现有几个区域字体换算之后在iphone6上是小于12px的,就有一个问题了,谷歌对小于12px的字体,是不做处理的.按理说,设计上应该要 ...

最新文章

  1. 2011年度最佳 jQuery 插件发布
  2. Linux下配置MySQL需要注意的几点
  3. 前端学习(2355):uni里面的样式学习
  4. xp系统c 语言命令重定向,Xp命令解释程序cmd.exe概述
  5. LaTeX设置长公式的跨页显示
  6. 力扣回文字串的动态规划解法
  7. python神经网络算法pdf_深度学习:卷积神经网络从入门到精通 PDF 原书扫描版
  8. 【转】Endnote X3破解版和教程
  9. Android apk安装报错:应用未安装 软件包似乎已损坏
  10. OPA541 功率放大器 音频放大器 高电压大电流 电机功率驱动 原理图PCB
  11. linux开启vt虚拟化,VT虚拟化如何开启
  12. JSP虚拟路径和虚拟主机的设置
  13. springMVC-RESTful约束下dispatcher拦截对象优化
  14. android 系统级闹铃,Android 设置系统闹铃和日历
  15. 游戏首选高性能台式机显示器,240hz的刷新率够吗?
  16. 无线蓝牙耳机什么牌子好?适合学生党的蓝牙耳机性价比排行榜
  17. 成都电子科技大学深圳校区计算机学院导师简介
  18. R语言-查看加载包、卸除加载包及安装包与卸载包
  19. 明天帮人拍照---婚礼摄影备课[zt]
  20. 转载:香港实习生微软实习经验分享

热门文章

  1. 大数据学习笔记——linux常用命令整理
  2. PDM是什么意思?PDM全称及功能
  3. 《惢客创业日记》2020.11.28(周六)谁有谁的身不由己?
  4. 苹果哪几个型号无服务器,苹果手机有哪几款值得入手的型号,看看这几款准没错...
  5. python动态网页图片爬取
  6. 快速克隆已有的WindowsToGo到另一个盘
  7. django 数据库 get_or_create函数返回值是tuple
  8. safari阅读模式_如何在Safari的阅读器模式下自动打开文章
  9. 20962保护和安全
  10. 服务器固态硬盘120g多少钱,你还在买120G固态硬盘?已经有人在后悔