简介
有时候,美术会提供图片(大部分是数字效果),Unity需要在Text组件使用这些美术效果,这时候可以把这些图片制作成一个Font(字体文件),供Text使用。
一、使用BmFont工具
注:工具直接搜索下载即可,同时会有使用步骤教程!
使用BmFont工具最终产出两个资源:
.fnt :该文件是字符的配置
.png :相当于图片资源集合
二、使用编辑工具(Unity)生成最终资源
1、将生成的.fnt 和 .png 文件导入Unity
2、将.png 在Inspector面板中将Texture Type设置成Sprite(2D and UI)
3、打开编辑器工具(编辑器代码见文章下方)
Font Texture:选择上边导入设置成的Sprite
BMFont fnt:选择.fnt文件
最后点击生成。
4、生成结果:
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
public class BMFontEditor : EditorWindow
{
public TextAsset fontPosTbl;
public Texture fontTexture;
public Vector2 scrollPos;
struct ChrRect
{
public int id;
public int x;
public int y;
public int w;
public int h;
public int xofs;
public int yofs;
public int index;
public float uvX;
public float uvY;
public float uvW;
public float uvH;
public float vertX;
public float vertY;
public float vertW;
public float vertH;
public float width;
}
// add menu
[MenuItem("工具菜单/美术/生成字体")]
static void Init()
{
EditorWindow.GetWindow(typeof(BMFontEditor));
}
void OnGUI()
{
EditorGUILayout.BeginVertical();
fontTexture = (Texture)EditorGUILayout.ObjectField("Font Texture(Sprite格式)", fontTexture, typeof(Texture), false);
EditorGUILayout.Space();
EditorGUILayout.LabelField("Use BMFont fnt File", EditorStyles.boldLabel);
EditorGUILayout.LabelField("(must Font Descriptor select Text)", EditorStyles.boldLabel);
fontPosTbl = (TextAsset)EditorGUILayout.ObjectField