游戏开发中经常会遇到使用艺术字的情况,比如游戏战斗过程中掉血、回血、回蓝等头上冒字,这时候一般需要一些艺术化的字体效果。
Unity3D中显示文本目前常用的方案是使用UGUI的Text组件。要使用Text组件来显示艺术字,就需要找到一个艺术字字库文件(.ttf)。然而,这有几个弊端:
1、通常情况下字库文件并不好找,还有版权等问题。
2、字库文件一般很大,而我们只是用到其中很少的几个字(比如0到9的数字和+、-号)。
3、美术一般会给字设计个性化的描边和阴影,字库文件无法满足这一要求。
实际中,美术一般会给出一堆图片文件,每个图片是一个字,如图:
我们当然还是希望能使用Text组件来显示了,这样程序上操作文本组件的接口是统一的,这就该我们今天的主角BMFont上场了。
准备工作
1、BMFont64.exe
下载地址:http://www.angelcode.com/products/bmfont/
2、BMFont Maker Unity插件
下载地址:https://files.cnblogs.com/files/imteach/BMFont.zip
制作字体文件
1、打开BMFont64.exe,点击Edit下的Open Image Manager菜单
2、在打开的Image Manager窗口有一个Image菜单,可以进行图片导入、编辑和删除操作。
3、点击Options/Export options菜单,设置导出选项
注意几点:
1)width、height根据原图片大小设置为合适的值,如果设置的太大,导出的图片有很大空白,造成空间浪费;如果设置的很小,导出图片可能会有多张,影响drawcall;值要设置成2的整数次幂
2)Bit depth选32
3)Presets选White text with alpha
4、点击Options/Save bitmap font as..菜单,选择位置后进行保存操作,最终会得到两个文件(*.fnt和*_0.png)
导入Unity3d
1、安装插件,将下载到的BMFont.zip解压后放到工程的Assets目录下,编译完成后,会在Unity编辑器上生成一个Tools/BMFont Maker菜单。
2、将上一步生成的*.fnt文件和*_0.png文件导入Unity。
3、在Unity中创建一个空材质,材质shader选GUI/Text Shader,将刚才导入的png纹理拖到FontTexture属性上。
4、在Unity中创建一个Custom Font,后缀名是.fontsettings,将刚才创建的材质拖到Custom Font的Default Material属性上。
5、点击Tools/BMFont Maker菜单,在打开的窗口中,选择相应的文件进行赋值。Target Font设置我们刚创建的.fontsettings文件,Fnt Data设置.fnt文件,Font Material设置材质文件,Font Texture设置.png文件。
6、点击Create BMFont,完成字体创建,然后我们就可以在Text组件中像使用ttf字体一样使用我们创建的fontsettings字体了。