BMFont制作美术字体

生成 Number.fnt、Number_0.png 两个文件,将其拖入Unity 相应位置,继续下一步

箭头所指就是我们要得到的最终目标,在文本处字体使用它就可以了。

在使用 Tools -> BMFont Maker 之前得先完成以下步骤:

  1. using UnityEngine;

  2.  

    using UnityEditor;

  3.  

  4.  

    public class BMFontEditor : EditorWindow

  5.  

    {

  6.  

    [MenuItem("Tools/BMFont Maker")]

  7.  

    static public void OpenBMFontMaker()

  8.  

    {

  9.  

    EditorWindow.GetWindow<BMFontEditor>(false, "BMFont Maker", true).Show();

  10.  

    }

  11.  

  12.  

    [SerializeField]

  13.  

    private Font targetFont;

  14.  

  15.  

    [SerializeField]

  16.  

    private TextAsset fntData;

  17.  

  18.  

    [SerializeField]

  19.  

    private Material fontMaterial;

  20.  

  21.  

    [SerializeField]

  22.  

    private Texture2D fontTexture;

  23.  

  24.  

    private BMFont bmFont = new BMFont();

  25.  

  26.  

    public BMFontEditor()

  27.  

    {

  28.  

    }

  29.  

  30.  

    void OnGUI()

  31.  

    {

  32.  

    targetFont = EditorGUILayout.ObjectField("Target Font", targetFont, typeof(Font), false) as Font;

  33.  

    fntData = EditorGUILayout.ObjectField("Fnt Data", fntData, typeof(TextAsset), false) as TextAsset;

  34.  

    fontMaterial = EditorGUILayout.ObjectField("Font Material", fontMaterial, typeof(Material), false) as Material;

  35.  

    fontTexture = EditorGUILayout.ObjectField("Font Texture", fontTexture, typeof(Texture2D), false) as Texture2D;

  36.  

  37.  

    if (GUILayout.Button("Create BMFont"))

  38.  

    {

  39.  

    BMFontReader.Load(bmFont, fntData.name, fntData.bytes); //借用NGUI封装的读取类

  40.  

    CharacterInfo[] characterInfo = new CharacterInfo[bmFont.glyphs.Count];

  41.  

    for (int i = 0; i < bmFont.glyphs.Count; i++)

  42.  

    {

  43.  

    BMGlyph bmInfo = bmFont.glyphs[i];

  44.  

    CharacterInfo info = new CharacterInfo();

  45.  

    info.index = bmInfo.index;

  46.  

    info.uv.x = (float)bmInfo.x / (float)bmFont.texWidth;

  47.  

    info.uv.y = 1 - (float)bmInfo.y / (float)bmFont.texHeight;

  48.  

    info.uv.width = (float)bmInfo.width / (float)bmFont.texWidth;

  49.  

    info.uv.height = -1f * (float)bmInfo.height / (float)bmFont.texHeight;

  50.  

    info.vert.x = 0;

  51.  

    info.vert.y = -(float)bmInfo.height;

  52.  

    info.vert.width = (float)bmInfo.width;

  53.  

    info.vert.height = (float)bmInfo.height;

  54.  

    info.width = (float)bmInfo.advance;

  55.  

    characterInfo[i] = info;

  56.  

    }

  57.  

    targetFont.characterInfo = characterInfo;

  58.  

    if (fontMaterial)

  59.  

    {

  60.  

    fontMaterial.mainTexture = fontTexture;

  61.  

    }

  62.  

    targetFont.material = fontMaterial;

  63.  

    fontMaterial.shader = Shader.Find("UI/Default");//这一行很关键,如果用standard的shader,放到Android手机上,第一次加载会很慢

  64.  

  65.  

    Debug.Log("Create Font <" + targetFont.name + "> Success");

  66.  

    Close();

  67.  

    }

  68.  

    }

  69.  

    }

将这个类放入工程中,这样在 Tools 中才可以找到 BMFont Maker,它的作用是赋予字体的详细信息,由于它是借助 NGUI 来实现的工具,所以得加上 NGUI 中的以下类:

原文地址:https://www.cnblogs.com/lancidie/p/9278796.html

时间: 2024-10-25 21:37:40

BMFont制作美术字体的相关文章

Unity3d之-使用BMFont制作美术字体

一.需求 游戏开发中经常遇到需要以美术字(而非字库)做数字显示的情况,通常美术会提供一组包含单个数字(也会有其它字符)的图片,可能是一张整图,也可能是每个数字分开的散图. 在此我以一张整图这种情况为例,来说明美术字体的具体制作流程.整图如下: 二.准备 整个制作过程需要用到三样工具: 字体数据制作工具 图片切割工具 字体生成工具 1.字体数据制作工具 字体数据制作工具名为BMFont,是一个Windows上的可执行软件,下载网址为:http://www.angelcode.com/product

UGUI使用BMFont制作美术字体&lt;一&gt;

不多说,先来效果图: 从头开始讲开发流程: 在Unity3d开发过程中,经常需要将美术提供的美术字组合成一个字体库,方便unity中的调用,BMFont则为此提供了不错的功能支持,它的下载地址在这里.它的使用方法网上有很多教程,这里不做解释,如果要使用此工具,要注意的是,这里记得使用xml格式,导出的图片为一张. 导出来的资源有:对应的图片,还有一个以fnt结尾的文件,如果打开此文件可以看到它就是一个xml文件: 在BMFont软件中我们这样操作:Options->Save configurat

Unity3D中使用BMFont制作图片字体 (NGUI版)

[旧博客转移 - 发布于2015年9月10日 16:07] 有时美术会出这种图片格式的文字,NGUI提供了UIFont来支持BMFont导出的图片字体 BMFont原理其实很简单,首先会把文字小图拼成一张大图(合成一张图上传GPU性能会高一些) 然后生成一份配置,描述了每张小图字符的Unicode编码(这里是10进制),坐标,宽高,偏移量,等等信息 下面说一下制作步骤 BMFont安装:http://pan.baidu.com/s/1jGvTAzc 打开BMFont 选择:Edit/Open I

Unity3d 使用 BMFONT 制作的艺术字体 不能居中 解决方法

文章转自http://blog.csdn.net/huutu 星环游戏 http://www.thisisgame.com.cn 转载请注明 在使用同事用 BMFONT 制作的 字体 时,在 Unity 3d 中发现,不能居中对齐. 在尝试 顶部对齐 中心对齐 底部对齐后发现,这个艺术字 是以 顶部 为锚点的. 所以结果就像上面的图片,我们选择 中心对齐,但是在 Unity3d 中看到却是 顶部 对齐了 文本框 的中心. 因为昨天正好简单学了下 Unity的 Custom Font,所以觉得可以

Unity教程之-UGUI美术字体的制作与使用

文章转载自:http://www.unity.5helpyou.com/3211.html 游戏制作中,经常需要使用各种花哨的文字或者数字,而字体库往往不能达到我们需要的效果,因此需要一种用图片替代文字的功能.ugui使用艺术字也比较简单,下面我们就来介绍下UGUI美术字体的制作与使用,本文使用BMFont作为字体制作工具,简单讲讲如何制作艺术字体:1.让美术提交分块后的文字: 2.打开BMFont工具,找到图片管理(Edit->Open Image Manager): 3.导入字体图片,并与文

Unity 使用BMFont制作字体

参考链接:http://blog.csdn.net/huang9012/article/details/32333913,作者:CSDN huang9012 NGUI版本:3.6.5 要自己制作字体,需要下载软件BMFont,下载BMFont 要制作的字体,这里以GOUDX-EXTRABOLD为例,下载字体 下载后安装,界面是这样的: 接下来开始制作字体: 1.打开Options——Font settings设置字体: 2.在Font Settings界面中设置如下: Font:要制作的字体名称

详解利用ShoeBox制作位图字体

http://childhood.logdown.com/posts/190580/-details-using-shoebox-produce-bitmap-fonts?utm_source=tuicool 1 ShoeBox 简介 ShoeBox官网 ShoeBox是一个基于AdobeAIR实现的免费跨平台的工具.这个工具使用拖放.剪切板的工作流程方式,能够很方便的处理游戏图片.创建位图字体等. 支持引擎 2 功能概括介绍 ShoeBox虽小,五脏俱全.作者做这个工具足见是用了心,如果各位想

基于cocoStudio和BMfont的艺术字体制作

http://blog.csdn.net/u011373759/article/details/44308455 我们在制作游戏的过程中经常要使用各式各样的艺术字体,这些字体让我们的游戏看起来更加美观更加的萌(- -!) 但是很多的新手都不知道这些字体是如何做出来的,这篇文章主要介绍的是基于cocos2dx它的配套UI制作工具cocostudio的艺术字体使用 字体的制作工具使用的是BMfont 下载地址:点击打开链接 首先我们制作我们想要的艺术字体(如果你有美工妹子的话,这应该轮不到你) 然后

unity制作图片字体

参考http://blog.sina.com.cn/s/blog_6768751b0101niao.html http://forum.china.unity3d.com/thread-20425-1-1.html 有时候美术会给出一系列的艺术字,例如数字0,1,2,3,4,5,6,7,8,9,这些字以图片的形式给开发人员,这时候图片的用法怎么用呢? 第一种想到的方法是把图片按字命名,然后以字为key存成字典,获取的时候通过字去获取(如代表数字1的图片命名为1,字典key为1,获取时通过Dict