[MenuItem(ItemNamePrefix + "Convert Font")] public static void ConvertFont() { var sb = new StringBuilder(); var objs = AssetDatabase.LoadAllAssetsAtPath("Assets/Amstrad/AmstradFont.psd"); var sprites = objs.OfType().OrderBy(s => CalcIndex(s.name)).ToArray(); foreach (var sprite in sprites) { sb.AppendLine("name " + sprite.name); sb.AppendLine("rect " + sprite.rect); } Debug.Log(sb.ToString()); var font = AssetDatabase.LoadAssetAtPath("Assets/Amstrad/Amstrad.fontsettings"); Debug.Log(font); var ci = new CharacterInfo { minX = 0, minY = -8, maxX = 8, maxY = 0, uvBottomLeft = new Vector2(4, 4), uvTopRight = new Vector2(12, 12), advance = 8 }; var characterInfo = new CharacterInfo[256]; for (int i = 0; i < 256; i++) { var sprite = sprites[i]; var r = sprite.rect; ci.index = i; ci.uvBottomLeft = new Vector2(r.xMin/ 256, r.yMin / 256); ci.uvTopRight = new Vector2(r.xMax / 256, r.yMax / 256); characterInfo[i] = ci; } font.characterInfo = characterInfo; EditorUtility.SetDirty(font); AssetDatabase.SaveAssets(); } private static int CalcIndex(string name) { var i = name.IndexOf('_'); try { return int.Parse(name.Substring(i+1)); } catch (Exception ex) { Debug.LogError(ex.Message + " "+name+" "+i); throw; } }