天天看点

[UGUI]UGUI使用图片文字(Custom Font)

  1. 如果你需要为NGUI导出素材,建议从开头开始看,如果是为UGUI导出字体素材,可以直接跳到第7步。
  2. 先清理一遍Character。 方法: Edit>Clear all chars in font
  3. 在BMFont中逐个导入贴图(在此以数字0~9为例):Edit>Open Image Manager. 点击Image>Import Image。不能批量导入,也不能批量编辑,虽然是免费的,但这软件做的也太他妈傻逼了,但问题就在于还没有更好的替代品,也只能忍了
  4. 设置好ID,这里的ID就是ASCII码,例如0是48,1是49,以此类推。可以在BMFont的字符窗口看到ID,鼠标悬停的字符,右下角有一对数字,前者即ASCII码(后者是Unicode码)
  5. Options>Export Options里设置贴图大小(大小自己看着给,2的N次方尺寸,多试几次,用Options>Visualize来预览,不要浪费,更不要一张图装不下,生成了两张),Padding和Spacing设置为0(因此在做贴图的时候要留点空白边).
  6. 导出Font,会生成两个文件,一个fnt,一个图片,fnt可以为NGUI所用,这里就不多说了,UGUI中使用的Custom Font只能用到图片。
  7. BMFont的工作至此技术,下面的都是在Unity中的操作。其实不用BMFont也可以做这个工作,直接在Photoshop里按照固定的尺寸和网格把图片依次排列也可以达到这个效果,因为后面我们只需要一张PNG的图片。
  8. 把PNG图片导入Unity工程
  9. 创建材质球,使用Unlit>Transparent材质,关联上述贴图
  10. 创建Custom Font,将上述材质球关联到Default Material中。
  11. 先将Character Rects的size设置为1,然后设置第一个元素的参数
  12. Index为字符的Ascii码,例如0为48. 本例中还有个办法,可以设置Custom font的Ascii Start Offset为48,然后从0-9的Index依次设置成0-9,结果是完全一样的。

    Uv:整张贴图左下角为(0,0)点,右上为(1,1)点,因此如果是一个尺寸为256*256的图片,划分方式是4*4,那么第一个物体的Uv是这样的: X:0 Y:0.75 W:0.25 H:0.25 (Y是0.75因为是从下往上数,第一个字符的图片左下角的Y位于3/4处。宽度和高度是0.25,因为每个字符的宽和高都占据了整张图宽和高的1/4,其他Uv划分方法的图片类推,不多解释了)

    Vert是实际尺寸和偏移,X:0 Y:0 W:64 H:-64 偏移为0,像素宽是64,注意,高度是-64,至于为什么是负数,应该也是从左下角往右上角开始算起。(不得不说这个设置也很二,非要很别扭的填一个负数)

    Width是64(说实话不明白这里为什么又填写一次宽度)

  13. 第一个填写好以后,再把Character Rects的Size改成需要的字符数量,本例为10。这样新增的字符都会复制第一个字符的设置。只需要改动Index和Uv中的Y了。
  14. 设置好字体以后,创建一个Text,关联上一步的字体,还要设置Material为第9步创建的材质(这样才能正确显示字体效果)。之后就可以输入你创建的自定义字体了,当然,只能显示你创建了的字符,本例中是0~9。整个过程非常低效,期待有增强插件出现