using UnityEngine; 
 | 
using System.Collections; 
 | 
using UnityEditor; 
 | 
using System.Text; 
 | 
  
 | 
public class FontMaker 
 | 
{ 
 | 
    static public Font m_myFont; 
 | 
    static public TextAsset m_data; 
 | 
    static private BMFont mbFont = new BMFont(); 
 | 
  
 | 
    static public void GenerateCharacterInfo() 
 | 
    { 
 | 
  
 | 
        CustomFontReader.Load(mbFont, m_data.name, m_data.bytes); 
 | 
        CharacterInfo[] characterInfo = new CharacterInfo[mbFont.glyphs.Count]; 
 | 
        for (int i = 0; i < mbFont.glyphs.Count; i++) 
 | 
        { 
 | 
            BMGlyph bmInfo = mbFont.glyphs[i]; 
 | 
            CharacterInfo info = new CharacterInfo(); 
 | 
            info.index = bmInfo.index; 
 | 
            info.uv.x = (float)bmInfo.x / (float)mbFont.texWidth; 
 | 
            info.uv.y = 1 - (float)bmInfo.y / (float)mbFont.texHeight; 
 | 
            info.uv.width = (float)bmInfo.width / (float)mbFont.texWidth; 
 | 
            info.uv.height = -1f * (float)bmInfo.height / (float)mbFont.texHeight; 
 | 
            info.vert.x = (float)bmInfo.offsetX; 
 | 
            info.vert.y = (float)bmInfo.offsetY; 
 | 
            info.vert.width = (float)bmInfo.width; 
 | 
            info.vert.height = (float)bmInfo.height; 
 | 
            info.width = (float)bmInfo.advance; 
 | 
            characterInfo[i] = info; 
 | 
        } 
 | 
        m_myFont.characterInfo = characterInfo; 
 | 
  
 | 
        EditorUtility.SetDirty(m_myFont); 
 | 
        AssetDatabase.SaveAssets(); 
 | 
        AssetDatabase.Refresh(); 
 | 
    } 
 | 
  
 | 
    [MenuItem("策划工具/美术字制作")] 
 | 
    static public void OpenFontMakerWindow() 
 | 
    { 
 | 
        Rect windowRect = new Rect(Screen.width / 2 - 200, Screen.height / 2 - 100, 400, 200); 
 | 
        FontMakerWindow modalTipswindow = EditorWindow.GetWindowWithRect<FontMakerWindow>(windowRect, true, "自定义字体编辑器", false); 
 | 
    } 
 | 
  
 | 
} 
 |