加载中…
个人资料
潜水的小懒猫
潜水的小懒猫
  • 博客等级:
  • 博客积分:0
  • 博客访问:576,837
  • 关注人气:292
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

UGUI(十)美术字库

(2015-02-14 15:47:17)
标签:

ugui字库

customfont

分类: UGUI

福利又来了!

 

使用NGUI时,游戏中字库和美术字库大家都知道用BMFont工具生成,但是UGUI却不一样,UGUI没有提供导入字库配置文件的接口,但是它提供新的功能组件【CustomFont】,可引入带有字库图片的材质球,并且提供字符信息的输入,比如ASCII码,UV信息,字体大小等。那么我们就有希望把美术字库用到UGUI上!

 

在这里尝试使用BMFont的字库信息导入到Unity,Unity自带的图集裁剪工具也可以生成相关字库信息,暂时还没研究。

 

如下图为CustomFont属性面板:

UGUI(十)美术字库

 

1.首先通过BMFont制作字库配置文件

(如果不知道怎么生成,请百度搜索【unity3d中使用BMFont制作字库】):

UGUI(十)美术字库

这两个文件眼熟吧^_^


2.然后编写导入配置的脚本。

(因为时间有限要回家过年了,比较仓促,这里就简单的测试下。最终写成在编辑器下运行的菜单比较好。)

  1. using UnityEngine;  
  2. using System.Collections;  
  3. using UnityEditor;  
  4.   
  5. public class MyFont MonoBehaviour   
  6.  
  7.     public Font m_myFont;  
  8.     public TextAsset m_data;  
  9.     private BMFont mbFont new BMFont();  
  10.     void Start ()   
  11.      
  12.         BMFontReader.Load(mbFont, m_data.name, m_data.bytes);  // 借用NGUI封装的读取类
  13.         CharacterInfo[] characterInfo new CharacterInfo[mbFont.glyphs.Count];  
  14.         for (int 0mbFont.glyphs.Count; i++)  
  15.          
  16.             BMGlyph bmInfo mbFont.glyphs[i];  
  17.             CharacterInfo info new CharacterInfo();  
  18.             info.index bmInfo.index;  
  19.             info.uv.x (float)bmInfo.x (float)mbFont.texWidth;  
  20.             info.uv.y 1-(float)bmInfo.y (float)mbFont.texHeight;  
  21.             info.uv.width (float)bmInfo.width (float)mbFont.texWidth;  
  22.             info.uv.height -1f (float)bmInfo.height (float)mbFont.texHeight;  
  23.             info.vert.x (float)bmInfo.offsetX;  
  24.             //info.vert.y (float)bmInfo.offsetY;  
  25.             info.vert.y 0f;//自定义字库UV从下往上,所以这里不需要偏移,填0即可。 
  26.             info.vert.width (float)bmInfo.width;  
  27.             info.vert.height (float)bmInfo.height;  
  28.             info.width (float)bmInfo.advance;  
  29.             characterInfo[i] info;  
  30.          
  31.         m_myFont.characterInfo characterInfo;  
  32.      
  33.  

补充一下,下面这几个读取BMFont配置的代码文件来自NGUI:

UGUI(十)美术字库

 

3.代码解释以及操作

m_myFont是在U3D中右键创建的CustomFont

m_data是BMFont导出的.fnt配置文件

通过上面的代码将配置信息读出来写到CustomFont中,然后将创建材质球把字库图放进去,材质球拖到CustomFont中和要显示文字的Text中,这样就完成了字库的制作。

 

4.然后输入文字测试,效果如下:

UGUI(十)美术字库

UGUI(十)美术字库
OK,效果杠杠的!哇咔咔,收拾东西回家过年...

(转载请注明出处^_^)

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有