Unity的UGUI的文字渲染效率应该是挺高的,一般来说用默认的Text控件,TTF的Font就满足需求了。不过有时候需要渲染艺术字体的时候还是需要用到BMFont。
一、BMFont的基础使用,创建fnt字体的步骤就不多说了。这里额外提一下就是BMFont是支持命令行的。这里贴一下我使用的脚本,更新字体比较方便。
bmfc文件是BMFont的配置文件,使用BMFont的GUI程序设置并保存好对应的字体配置(配置里面包含纹理大小、特殊字符对图片的映射关系等等)
txt文件是一个纯文本,包含所需要生成字体的所有文字
# -*- coding: utf-8 -*-
import os,sys,shutil,subprocess,glob
global SOURCE_PATH
global TARGET_PATH
SOURCE_PATH = 'font/'
TARGET_PATH = '../Assets/Font'
COMMON_TEXT = "text.txt"
CMD = 'support/BMFont/bmfont.exe'
def genFont(configPath, txtPath):
fntPath = configPath.replace('.bmfc', '.fnt');
pngPathOld = configPath.replace('.bmfc', '_0.png');
pngPathNew = configPath.replace('.bmfc', '.png');
subprocess.call('"{0}" -c {1} -o {2} -t {3}'.format(CMD, configPath, fntPath, txtPath))
if os.path.exists(pngPathNew):
os.remove(pngPathNew);
os.rename(pngPathOld, pngPathNew);
fileData = []
fp = open(fntPath, 'r');
for line in fp:
if line.find('file="') != -1:
fileData.append(line.replace('_0.png', '.pn