题记 - 作为独立开发者,需要面对产品从策划到开发到发布到运营所有过程中的方方面面,分开来说,每个步骤都是一个大课题,按理来讲需要多人分工合作才能把产品做好,而独立开发者却只能自己扛起所有大旗,从这点来看,独立开发者是孤独的,因为每当他环顾四周,看到的只有镜子里的自己。(我建了一个QQ群:438640117,欢迎同样是独立开发者的你加入,共同探讨独立开发中遇到的各种问题,分享各种经验。感谢这个美好的时代,让我们虽然远隔万水千山依然能方便的交流)
这篇文章主要是分享一下Unity中如何制作Bitmap字体(图片字体),我假设看到这篇文章的人都已经知道什么是制作Bitmap字体了,我相信,如果你是独立开发者你肯定知道什么叫制作Bitmap字体。我曾经在几个Unity技术群里问过Unity里怎么制作Bitmap字体,但是从得到的回答看,他们并不清楚什么叫制作,他们只知道怎么使用,因为这些素材早由美术做好提供给了他们。这就是独立开发者孤独的一个体现(也许是我问错了地方,我也问过几个独立开发者群,但是得不到任何回答,这些群里更多的是吹水,因此我才想建一个真正能交流独立开发问题而不是只有吹水的群,我想不明白为什么这些人要在独立开发群里吹水,要吹水可以去水群啊),很多时候你遇到的问题没有人能帮你,你只能靠自己。如果你不清楚什么是制作Bitmap字体的话请先谷歌一下(抵制百度从我做起)。
先分享一个免费的方法:以前用Cocos2d-x时我是用的是一个俄罗斯人写的java开源软件FontEditor这里可以下载源码,这个工具可以用来制作Cocos2d-x使用的fnt字体(等有时间我准备给它加个自动识别字符块的功能,这个想法已经有一年多了迟迟没有动手,哭)。这个免费的方法需要的就是FontEditor制作好后导出的这个fnt文件和字母图片。接下来还需要一个Unity插件Bitmap Font Importer,将这个插件导入到你的Unity工程,然后再导入前面提到的fnt文件和图片,这个插件会根据这两个文件自动生成一个对应的Unity可用的Custom Font。就是这么简单,不过我要详细说的并不是这个方法,因为我喜欢用PS做字体图片(这样自定义程度可以更高),再用FontEditor来制作fnt文件,FontEditor需要手动为每个字母设置区域,这个过程非常痛苦,如果你是用Bitmap字体生成软件来做的话,那这个方法是最方便的。我还试过ShoeBox,怎么说呢,这个工具其它的功能比较强大,但是字体制作功能很坑,它是自动识别字母的,但是它的自动识别算法估计不太行,稍微炫一点的图片总是会识别错误,比如把1识别成L,a识别成e,识别错误也就算了,你还不能手动去调整,也许是我用的姿势不对,如果有知道的请告诉我,非常感谢。
接下来分享一个我强烈推荐的方法,这个方法需要一个Unity售价9美金的插件Font Setter Packer(下载地址),我想解释一下为什么我愿意花9美金来购买这个插件。我本身也是一个很抠的人,要我花9美金买一个软件那这个软件一定要能给我带来远超过9美金的收益才行,而这个插件正如作者在介绍中说的那样,能让你在几分钟内从一张png字母图片开始完成一个Unity的Custom Font字体。这个过程假设使用FontEditor来做的话,视字母的多少花费的时间大概是半个小时到一个小时,如果还有汉字的话,这个时间会更长。独立开发者最缺的就是时间,有太多事情需要我们花时间去操心了,能花点小钱就节约大量时间出来这在我看来是非常划算的。废话不多说,下面开始步入正题。
原料:
1.Font Setter Packer插件。
2.一张提前制作好的有字母或汉字带透明通道的png图片,注意字母之间一定要留一定空隙。比如这样的(这只是我为了测试这个插件随意制作的,花费时间不超过5分钟)
步骤:
1.导入Font Setter Packer插件,如果已经导入请忽略。
2.导入字母图片,并注意设置成下图所示的样子,设置好以后不要忘记Applay
3.打开Unity中菜单栏中Window->Font Editor窗口
4.选择需要编辑的字体图片文件
然后你会看到这个界面
5.进入自动设置模式,其实是半自动,因为还是要手动输入对应的字母或汉字
6.逐个输入对应的字母或汉字,每输入完一个以后按回车键会自动进入下一个字母的输入模式,所有字母都输入完成后按Stop退出自动模式
退出自动设置模式后是这个样子
7.点击+1,增加一个空格字符,并将空格字符对应的位置放在合适的位置,调整好宽度和高度
8.设置字符对应区域的锚点的垂直位置,注意,同一行的锚点必须保证在同一水平线上,可以直接用鼠标拖动调整锚点位置,也可以直接通过修改Y的值来精确设置锚点的垂直位置
设置好以后是这个样子的,到此字符的设置部分就算完成了
9.重新打包,其实不打包也是可以的,只是打包会更节约空间。
Pack method是图片打包方式,可以多试几次选择一个最优的方案,每变更一次Pack method都需要重新点击Pack按钮重新打包一次以查看效果。
确认结果后点击Accept Pack Result按钮完成打包,最后关闭Font Editor对话框即可
此时可以看到asset文件夹下多出来几个文件font-1(Font),font-1(Font)(Packed),font-1(Material),font-1(Material)(Packed),font-1(Packed),其中带Packed的都是打包后生成的文件,而红框内的文件是打包之前的,打包完成以后我们不再需要它们,删除。
最后Fonts文件夹内只剩下3个文件
10.测试,在场景内新建一个UI->Text对象,Text的Font属性选择为我们刚刚创建好的font-1(Font)(Packed)文件,Materia属性选择font-1(Material)(Packed),在Text属性随便输入一句话。需要注意的是,由于Bitmap字体的特殊性,我们无法通过直接设置Font size的大小来设置字体的显示大小,但是我们可以通过设置文字对象的缩放大小来达到这个目的。此外,如果你的图片字体比较大,那么你可能看不到任何文字显示,这时候你需要调整文字对象的width和height到合适的大小来使文字得到显示。
到此分享结束,谢谢观赏!
最后再为我的群打一下广告,如果你是独立开发者,欢迎加入这个群:438640117