ShoeBox 快速建立Unity美术字库(NGUI以及UGUI)

来源:互联网 发布:网络大学 编辑:程序博客网 时间:2024/04/29 13:16
昨天经同事介绍,使用ShoeBox建立Unity的美术字库,爽死了!让bmfont什么的见鬼去吧!基于原有的说明文档,还是有点不直接,让我误会了好一段时间,所以还是决定自己写一下。先给出下载地址:http://renderhjs.net/shoebox/官网,免费下载,.air格式文件,之前需要下载安装Adobe Air:https://get.adobe.com/cn/air/然后安装的过程就不详细说了,直接上正轨。1、美术给出效果图,字体他们爱怎么搞就怎么搞,唯一注意的就是字之间的间距需要足够大,最好每个字都在一个固定的框框内,以便ShoeBox进行切割。如图:

这里写图片描述
2、好,现在开始程序的事情了,打开ShoeBox,找到GUI/ BitmapFont:
这里写图片描述
3、右键点击Bitmap Font,打开设置:
这里写图片描述
注意几项:
File Name: 输出文件的名字
Txt Chars : 对应的文字符号,顺序要根据图标显示的,从左到右,从上到下一次排列,不然就会出现张冠李戴的问题了,比如这里0要在9之后~不是排在第一位,就是因为美术给出的图片0就是在9后面的。
Txt Line Height:行高,不用说了吧
设置完毕之后,点一下Apply,好了。
4、用鼠标将美术提供的图片拖进Bitmap Font内,对!就是拖!为了防止你们想象不到,我还是截个图吧:
这里写图片描述
如果你是在setting打开的情况下进行拖拽,你就可以看到一下的预览图:
这里写图片描述
是否一目了然?
5、最后点一下Save Font,就生成了一下两个文件:
这里写图片描述
那个txt文件其实就是fnt啦,see,这个生成过程是不是比bmfont生成图片,然后再让美术替换图片要爽得多~
再附录一篇网上转载得比较多的文章:
http://childhood.logdown.com/posts/190580/-details-using-shoebox-produce-bitmap-fonts

剩下的,如果你是使用的NGUI,那么就打开Font Maker,原来怎么办就怎么办。这个我就不多说了。

如果你是是用的UGUI,就要建立一个Common Font,然后需要对每个元素进行复制,以下有一段通过txt信息对Common Font进行赋值的核心代码:

BMFontReader.Load(bmFont, fntData.name, fntData.bytes); // 借用NGUI封装的读取类            CharacterInfo[] characterInfo = new CharacterInfo[bmFont.glyphs.Count];            for (int i = 0; i < bmFont.glyphs.Count; i++)            {                BMGlyph bmInfo = bmFont.glyphs[i];                CharacterInfo info = new CharacterInfo();                info.index = bmInfo.index;                info.uv.x = (float)bmInfo.x / (float)bmFont.texWidth;                info.uv.y = 1 - (float)bmInfo.y / (float)bmFont.texHeight;                info.uv.width = (float)bmInfo.width / (float)bmFont.texWidth;                info.uv.height = -1f * (float)bmInfo.height / (float)bmFont.texHeight;                info.vert.x = 0;                info.vert.y = -(float)bmInfo.height;                info.vert.width = (float)bmInfo.width;                info.vert.height = (float)bmInfo.height;                info.width = (float)bmInfo.advance;                characterInfo[i] = info;            }            // Create custom font            Font font = new Font();            font.name = FontName;            font.characterInfo = characterInfo;            font.material = CreateFontMeterial();   // 创建材质,里面绑定对应的字体贴图,以及渲染用的shader            // Save font.            string fontFile = ExportFile + ".fontsettings";            AssetDatabase.DeleteAsset(fontFile);            AssetDatabase.CreateAsset(font, fontFile);  

至于你怎么利用这段代码,我就不管了。
如何使用Common Font,更详细的文章:
http://blog.sina.com.cn/s/blog_89d90b7c0102vk20.html

0 0
原创粉丝点击