前言
在Unity的UI设计中,我们经常会遇到需要自定义字体的情况。毕竟Unity自带的字体只有Arial一种,根本无法满足人民群众对于美的向往。当然,全能的Unity支持我们导入或创建字体,并可以在GUI Text和Text Mesh中使用。虽然可导入字体给我们提供了更多选择的余地,但也可能遇到选择的字体和游戏整体不搭或者仅需少量特定字符的情况。这种时候Custom Font就为我们自定义字体提供了方便,而设计这样一套字体其实只需要 一张 期望的图片即可做到。
素材准备
和导入的字体不同,Custom Font并不是通用的 .ttf/.otf 文件,而是由用户指定的包含特定字符的图片生成的。以数字字体为例,我们的原始素材可以是下面这样的一张图片:
这里字符图片的选取还是有一定讲究的,理想状态下的字符图应该满足以下几个条件:
- 图片格式为PNG格式(这样可以保证得到的图片背景为透明,方便在Unity中进行处理)
- 图片中字符颜色为白色(可选条件,如果没有 改变字体颜色 的需求该条件可以忽略)
- 每个字符以透明背景分割,并且以整齐的间距排列(方便识别每个具体字符的位置)
- 每个字符的大小一致(保证得到的字体整齐并且方便初始化配置)
当然,上述四个条件均为可选条件,但尽量做到上述几点可以让你之后的工作节省大量的时间。如果找到的素材不理想,建议先通过Photoshop进行一些简单的处理。
创建字体材质
当你经过第一步的处理获得理想的素材之后,下一步就是使用该素材创建一个字体材质。之前也说过Custom Font和导入字体的不同之处就在于它是由字符图片生成的。而字体材质就是一种特殊的材质(Material),你可以把它看做是链接Custom Font和字符图的纽带。 它接受一张字符图的纹理并可以被赋予给一个Custom Font,这也是我们之前强调字符图只能有一张的原因。创建一个字体材质的过程非常简单,在Project视图中右键单击 Create - Material,然后将其使用的着色器改为 “GUI/Text Shader”即可。正常情况下Inspector窗口下你可以看到下面的样子: