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

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

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

  1. using UnityEngine;
  2. using UnityEditor;
  3. public class BMFontEditor : EditorWindow
  4. {
  5. [MenuItem("Tools/BMFont Maker")]
  6. static public void OpenBMFontMaker()
  7. {
  8. EditorWindow.GetWindow<BMFontEditor>(false, "BMFont Maker", true).Show();
  9. }
  10. [SerializeField]
  11. private Font targetFont;
  12. [SerializeField]
  13. private TextAsset fntData;
  14. [SerializeField]
  15. private Material fontMaterial;
  16. [SerializeField]
  17. private Texture2D fontTexture;
  18. private BMFont bmFont = new BMFont();
  19. public BMFontEditor()
  20. {
  21. }
  22. void OnGUI()
  23. {
  24. targetFont = EditorGUILayout.ObjectField("Target Font", targetFont, typeof(Font), false) as Font;
  25. fntData = EditorGUILayout.ObjectField("Fnt Data", fntData, typeof(TextAsset), false) as TextAsset;
  26. fontMaterial = EditorGUILayout.ObjectField("Font Material", fontMaterial, typeof(Material), false) as Material;
  27. fontTexture = EditorGUILayout.ObjectField("Font Texture", fontTexture, typeof(Texture2D), false) as Texture2D;
  28. if (GUILayout.Button("Create BMFont"))
  29. {
  30. BMFontReader.Load(bmFont, fntData.name, fntData.bytes); //借用NGUI封装的读取类
  31. CharacterInfo[] characterInfo = new CharacterInfo[bmFont.glyphs.Count];
  32. for (int i = 0; i < bmFont.glyphs.Count; i++)
  33. {
  34. BMGlyph bmInfo = bmFont.glyphs[i];
  35. CharacterInfo info = new CharacterInfo();
  36. info.index = bmInfo.index;
  37. info.uv.x = (float)bmInfo.x / (float)bmFont.texWidth;
  38. info.uv.y = 1 - (float)bmInfo.y / (float)bmFont.texHeight;
  39. info.uv.width = (float)bmInfo.width / (float)bmFont.texWidth;
  40. info.uv.height = -1f * (float)bmInfo.height / (float)bmFont.texHeight;
  41. info.vert.x = 0;
  42. info.vert.y = -(float)bmInfo.height;
  43. info.vert.width = (float)bmInfo.width;
  44. info.vert.height = (float)bmInfo.height;
  45. info.width = (float)bmInfo.advance;
  46. characterInfo[i] = info;
  47. }
  48. targetFont.characterInfo = characterInfo;
  49. if (fontMaterial)
  50. {
  51. fontMaterial.mainTexture = fontTexture;
  52. }
  53. targetFont.material = fontMaterial;
  54. fontMaterial.shader = Shader.Find("UI/Default");//这一行很关键,如果用standard的shader,放到Android手机上,第一次加载会很慢
  55. Debug.Log("Create Font <" + targetFont.name + "> Success");
  56. Close();
  57. }
  58. }
  59. }

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

转载于:https://www.cnblogs.com/lancidie/p/9278796.html

BMFont制作美术字体相关推荐

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

    一.需求 游戏开发中经常遇到需要以美术字(而非字库)做数字显示的情况,通常美术会提供一组包含单个数字(也会有其它字符)的图片,可能是一张整图,也可能是每个数字分开的散图. 在此我以一张整图这种情况为例 ...

  2. UGUI使用BMFont制作美术字体二

    还不多说,先来效果图: 是不是感觉比第一篇文章的工具更加高大上些,好了,现在开始讲开发流程,首先我们用到的工具依旧是BMFont,它的命令行在这里:bmfont.exe -c %1 -o %2 命令说 ...

  3. Egret 使用Texture Merger制作美术字体

    在游戏中,有时候美术为了显示更好的字体效果,美术会自己制作字体,让程序显示出来,如何实现显示美术给的美术字体效果呢.程序可以使用美术导出图片,自己使用代码组合起来使用(效率低下,程序繁琐).或者是使用 ...

  4. unity 使用BMFont 制作自定义字体

    unity cocos 使用BMFont,生成自定义字体 1.BMFont下载地址 http://www.angelcode.com/products/bmfont/ 本篇讲解如何利用美工提供的字符图 ...

  5. 基于Cocos Studio和BMfont制作艺术字体

    通常在游戏开发制作的过程中,我们常常要用到各式各样的艺术字体,适合游戏风格的.独特的艺术字体能让游戏看起来更加美观.更加生动活泼.但问题是很多新手并不知道这些字体是怎么来的,这篇文章主要讲一下如何基于 ...

  6. unity 3d中使用BMFont制作清晰字体

    1.大家可以在这免费下载到我们今天的主角工具BMFOnt. 下载BMFont 2.我们把它安装好后打开它,就是个样子了. 3.我们现在来制作我们想要的一些文字,这里我用来测试.新建一个txt文本文档, ...

  7. Unity制作美术字体、图片转字体库C#

    前言:在遇到Unity支持的字体库之外的字体时,可以将每个字的图片集中生成一个字体库,用来Unity文本使用. 一.功能 1.字体图片设置 字体图片等比等分在一张图片上,方便Unity系统自处理 2. ...

  8. unity中美术字体的制作

    unity中美术字体的制作 本次总结:客户端制作美术字体.我已知的两种方式:1.FontSetter插件.2.BMFont工具.这里比较推荐第一种插件,方便.快捷.简单. FontSetter插件 F ...

  9. Unity自定义美术字体(图片字体fontsettings)

    目录 本文内容 效果 工具代码 制作美术字体 1 资源 1.1 资源方式 1.2 资源命名 1.3 资源命名配置 2 打包字体 2.1 创建字体 2.2 更新字体 3 字体使用 本文内容 开发过程有个 ...

最新文章

  1. Python 基础 二
  2. LOJ 3094 「BJOI2019」删数——角标偏移的线段树
  3. Bing.com在.NET Core 2.1上运行
  4. 梦想成真…教学–专业的Java开发人员:工具和最佳实践
  5. java 无侵入监控_MyPerf4J 一个高性能、无侵入的Java性能监控和统计工具
  6. Android(组件大全)
  7. Javascript 随机数函数 学习之一:产生服从均匀分布随机数
  8. 女朋友跟你说晚安之后仍然在线,我用Python制作脚本成功征服
  9. Swift3数组编辑
  10. 司空见惯 - 会议室名称
  11. 微信小程序之使用云存储
  12. 【游戏开发引擎】 实验3:Captain Blaster 2D 滚动射击游戏
  13. mysql导入错误1148,将CSV导入MySQL表会返回错误#1148
  14. 韦东山第3期嵌入式Linux项目-视频监控-1-v4l2视频框架分析
  15. Jquery-留言板
  16. 高德地图——切换路线的不同实现(驾车、公交、骑行)
  17. 常见算法思想2:递推法
  18. Word美化代码块样式
  19. 学会Zynq(10)lwIP简介
  20. 10G数据,1G内存排序问题

热门文章

  1. 网页视频播放器/视频播放插件
  2. 腐烂国度2计算机学教科书怎么使用,腐烂国度2全操作指南
  3. [Pandas] 多行合并成一行
  4. 网易组建Python数据分析学习群,3场直播课+6G学习资料免费领
  5. 论文笔记(三):深度学习在水文水资源中的应用综述
  6. ztree中获取某节点的所有叶子节点
  7. MKS SERVO42C 闭环步进电机 使用说明(三)串口通讯
  8. Geekbench 5 for Mac(检测系统性能工具)
  9. R语言绘图学习1(pairs,cpairs,饼图,三维饼图,高密度散点图,三维图,旋转三维图)
  10. 有什么软件可以测试自己性格,怎样测试自己的性格