有很多网友介绍Unity 创建并使用font的方法,这里总结一下备忘,同时网友的部分文章有一些小坑被我踩到,在这里记录一下,希望能帮助其他同学

一、首先创建字体(ttf文件),网上有用BitMap工具的,也有在Mac系统上用GlyPhDesigner的,其实两个都可以,只是GlyPhDesigner在部分mac retain屏幕上显示不全,制作ttf的方法就不过多介绍(美工的工作)。

二、制作font字体

我用的Unity版本是5.5.2

1、先创建一个材质球,shader模式为GUI/Text Shader ,将上面的字体纹理添加上去,纹理的Alpha Source设置要注意(我设置成Input Texture Alpha,如果做出来的字体按照弧度图设置透明度请选择From Gray Scale,这个根据制作出来的字体样式来决定,跟美工商量它的alpha通道模式)

2、创建font文件

3、将材质添加到font上

后面就是最重要的步骤,配置Character Rects,网友提供了相关公式,不过对于包含很多字体的fnt文件,手动配置实在是太麻烦,所有从网上搜到了位网友写的自动解析方法,注意这个方法只适用于xml格式的fnt文件

using UnityEngine;
using System.Collections;
using System.Xml;
using System;public class CustomFontImportor : MonoBehaviour
{public Font font;public TextAsset textAsset;void Awake(){if(font == null || textAsset == null){Debug.LogError("请设置font和textAsset.");return;}XmlDocument xmlDocument = new XmlDocument();xmlDocument.LoadXml(textAsset.text);int totalWidth = Convert.ToInt32(xmlDocument["font"]["common"].Attributes["scaleW"].InnerText);int totalHeight = Convert.ToInt32(xmlDocument["font"]["common"].Attributes["scaleH"].InnerText);XmlElement xml = xmlDocument["font"]["chars"];ArrayList characterInfoList = new ArrayList();for(int i = 0; i < xml.ChildNodes.Count; ++i){XmlNode node = xml.ChildNodes[i];if(node.Attributes == null){continue;}int index = Convert.ToInt32(node.Attributes["id"].InnerText);int x = Convert.ToInt32(node.Attributes["x"].InnerText);int y = Convert.ToInt32(node.Attributes["y"].InnerText);int width = Convert.ToInt32(node.Attributes["width"].InnerText);int height = Convert.ToInt32(node.Attributes["height"].InnerText);int xOffset = Convert.ToInt32(node.Attributes["xoffset"].InnerText);int yOffset = Convert.ToInt32(node.Attributes["yoffset"].InnerText);int xAdvance = Convert.ToInt32(node.Attributes["xadvance"].InnerText);CharacterInfo info = new CharacterInfo();Rect uv = new Rect();uv.x = (float)x / totalWidth;uv.y = (float)(totalHeight - y - height) / totalHeight;uv.width = (float)width / totalWidth;uv.height = (float)height / totalHeight;info.index = index;info.uvBottomLeft = new Vector2(uv.xMin, uv.yMin);info.uvBottomRight = new Vector2(uv.xMax, uv.yMin);info.uvTopLeft = new Vector2(uv.xMin, uv.yMax);info.uvTopRight = new Vector2(uv.xMax, uv.yMax);info.minX = xOffset;info.maxX = xOffset + width;info.minY = -yOffset - height;info.maxY = -yOffset;info.advance = xAdvance;info.glyphWidth = width;info.glyphHeight = height;characterInfoList.Add(info);}font.characterInfo = characterInfoList.ToArray(typeof(CharacterInfo)) as CharacterInfo[];Debug.Log("生成成功.");}
}

网上不止这一种解析方法,但是我几乎都拿过来试过,还是这个好用,当然也可以改成Editor

使用方法很简单,拖到一个对象上面把自己创建的font和fnt字体文件拖拽到组件中即可生成

4、最后一步创建一个Text,将创建的font文件和材质拖拽到对象中(材质不要拖,我拖进去之后纹理变成了白色)

之后我遇到的问题是,上面步骤做好之后编辑text发现没用,后来网友提供方法是把这个font字体导出资源包,然后再拖入工程即可使用。

另外,我换到另一台电脑按照上面步骤制作的时候马上就显示了,但是文字模糊不清,我重新导出再导入就可以了,所以没找到原因之前还是导出一下吧,不知道Unity的font的刷新保存功能怎么做?

csdn这个编辑器真是烂

参考资料,非常感谢下面的作者:

http://blog.csdn.net/liujunjie612/article/details/45694719

http://blog.csdn.net/hjthack/article/details/70238649

http://blog.csdn.net/pz789as/article/details/54313122

Unity 制作font字体相关推荐

  1. (二)unity优化方案:利用BMFont工具制作font字体(在UGUI和NGUI中使用)

    今天的任务是制作一个在NGUI和UGUI中可以使用的新字体,利用该新字体的文本可以正常显示在界面上,并且还支持中文字符的输入与显示.我在这里记录下制作过程,希望可以帮助到其他爱好者. 为什么要用字体集 ...

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

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

  3. Unity制作自定义字体的两种方法

    Unity支持自定义图片字体(CustomFont),网上有很多教程,细节不尽相同,当概括起来基本就是两种方式.一是使用BMFont,导出图集和.fnt文件,再使用图集在Unity中设置得到字体.二是 ...

  4. unity制作bitmap字体-艺术字

    工具:bmfont 链接:https://pan.baidu.com/s/1Oz6hUB-tYWvtqfrDACM_eA 提取码:0000 打开默认是空的 通过上方的image菜单栏进行操作 导入图片 ...

  5. unity字体效果-1分钟制作镂空字体

    ** 如何用unity制作镂空字体? ** 最终效果(见下图): 1 新建Text-TextMeshPro对象 2 输入文字,根据需求设置对应参数 3 打开材质面板 4选择材质 5 隐藏文字Face, ...

  6. unity中美术字体的制作

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

  7. unity 字体width_Unity中制作自定义字体

    使用Unity中的Sprite.Unity支持把一个Sprite切割成多个. 需要手动做的工作是将图集的TextureType设置为Sprite,然后把SpriteMode设为Multiple,打开S ...

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

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

  9. Unity教程||Unity添加中文字体||Unity知识记录--制作UI粒子特效

    Unity添加中文字体 ## 1.拷贝字体文件 拷贝C:\Windows\Fonts文件夹下,华文细黑常规文件到项目中 ## 2.下载中文字库 链接: https://pan.baidu.com/s/ ...

最新文章

  1. 如何导入pytorch包_PyTorch 目前的运行途径
  2. python 文本分析库_Python有趣|中文文本情感分析
  3. abaqus pythonreader_【技术邻】Abaqus里应用Python的一些技巧
  4. 机器学习 数据模型_使用PyCaret将机器学习模型运送到数据—第二部分
  5. Java 并发编程Semaphore的应用与源码解析
  6. 201771010101白玛次仁《面向对象程序设计(java)》第十二周实验总结
  7. python辗转相除法求最小公倍数_Python实现利用最大公约数求三个正整数的最小公倍数示例...
  8. lambda表达式for_each,find_if简介
  9. 处理字符数据--排序规则(Collation)
  10. 缓存与缓冲的区别 cache与buffer的区别
  11. WGCLOUD部署对服务器硬件配置的一些建议
  12. 关于WIN10开机自动开启小键盘解决方案
  13. 基于Php门禁系统设计与实现
  14. Openzeppelin库 09.Crowdsale
  15. csgo 机器人模式_csgo怎么单机跟电脑打只有每队5人,怎么增加BOT
  16. 防止表单重复提交的解决方案
  17. CSS学习笔记--文本格式化
  18. matlab 将矩阵转化成向量的两个方法
  19. 辅助模块应用(auxiliary/scanner/portscan/tcp)
  20. 信息化治理与北京治堵:疏图同归

热门文章

  1. linux之shell语言
  2. 大型项目前端架构浅谈(8000字原创首发)
  3. STM32开发 -- RTC详解
  4. 在64位计算机上安装MapGuide Studio 2010
  5. 通往天堂的选择问题 python_意识体革命
  6. Spring 中的Advice类型介绍
  7. 服务器监控管理工具大全
  8. 【机器学习实战】k-近邻算法案例——改进约会网站的配对效果
  9. Adversarial Image Registration with Application for MR and TRUS Image Fusion
  10. ubuntu搜狗输入法中文无法切换英文