//#if UNITY_4 || UNITY_5_1 //#pragma warning disable 0618 //#endif //#if UNITY_EDITOR //using UnityEngine; //using System.IO; //using System.Xml; //using UnityEditor; //public static class BitmapFontGenerater //{ // static string DEFAULT_SHADER = "Unlit/Transparent"; // [MenuItem("Assets/Create/Bitmap Font")] // public static void GenerateBitmapFont() // { // Object[] textAssets = Selection.GetFiltered(typeof(TextAsset), SelectionMode.DeepAssets); // Object[] textures = Selection.GetFiltered(typeof(Texture2D), SelectionMode.DeepAssets); // if (textAssets.Length < 1) // { // Debug.LogError("BitmapFont Create Error -- XML File is not Selected. (XMLファイルを選択してください)"); // return; // } // if (textures.Length < 1) // { // Debug.LogError("BitmapFont Create Error -- Texture File is not selected. (フォントテクスチャを選択してください)"); // return; // } // Generate((TextAsset)textAssets[0], (Texture2D)textures[0]); // } // static void Generate(TextAsset textAsset, Texture2D texture) // { // XmlDocument xml = new XmlDocument(); // xml.LoadXml(textAsset.text); // XmlNode common = xml.GetElementsByTagName("common")[0]; // XmlNodeList chars = xml.GetElementsByTagName("chars")[0].ChildNodes; // CharacterInfo[] charInfos = new CharacterInfo[chars.Count]; // float textureW = float.Parse(GetValue(common, "scaleW")); // float textureH = float.Parse(GetValue(common, "scaleH")); // for (int i = 0; i < chars.Count; i++) // { // XmlNode charNode = chars[i]; // if (charNode.Attributes != null) // { // charInfos[i].index = int.Parse(GetValue(charNode, "id")); // Rect vertRect = new Rect(); // vertRect.width = float.Parse(GetValue(charNode, "width")); // vertRect.height = -(float.Parse(GetValue(charNode, "height"))); // vertRect.x = float.Parse(GetValue(charNode, "xoffset")); // vertRect.y = -(float.Parse(GetValue(charNode, "yoffset"))); //#if UNITY_4 || UNITY_5_1 // Rect uvRect = new Rect(); // uvRect.x = float.Parse(GetValue(charNode, "x")) / textureW; // uvRect.width = float.Parse(GetValue(charNode, "width")) / textureW; // uvRect.height = float.Parse(GetValue(charNode, "height")); // uvRect.y = (textureH - float.Parse(GetValue(charNode, "y")) - uvRect.height) / textureH; // uvRect.height = uvRect.height / textureH; // charInfos[i].width = int.Parse(GetValue(charNode, "xadvance")); // charInfos[i].flipped = false; // charInfos[i].uv = uvRect; // charInfos[i].vert = vertRect; //#else // float charX = float.Parse(GetValue(charNode, "x")) / textureW; // float charWidth = float.Parse(GetValue(charNode, "width")) / textureW; // float charHeight = float.Parse(GetValue(charNode, "height")); // float charY = (textureH - float.Parse(GetValue(charNode, "y")) - charHeight) / textureH; // charHeight = charHeight / textureH; // // UnFlipped. // charInfos[i].uvBottomLeft = new Vector2(charX, charY); // charInfos[i].uvBottomRight = new Vector2(charX + charWidth, charY); // charInfos[i].uvTopLeft = new Vector2(charX, charY + charHeight); // charInfos[i].uvTopRight = new Vector2(charX + charWidth, charY + charHeight); // charInfos[i].minX = (int)vertRect.xMin; // charInfos[i].maxX = (int)vertRect.xMax; // charInfos[i].minY = (int)vertRect.yMax; // charInfos[i].maxY = (int)vertRect.yMin; // charInfos[i].advance = int.Parse(GetValue(charNode, "xadvance")); //#endif // } // } // string rootPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(textAsset)); // string exportPath = rootPath + "/" + Path.GetFileNameWithoutExtension(textAsset.name); // Material material = GenerateMaterial(exportPath, texture); // Font font = GenerateFont(exportPath, textAsset.name, material); // font.characterInfo = charInfos; // // Save m_LineSpacing. // XmlNode info = xml.GetElementsByTagName("info")[0]; // SerializedObject serializedFont = new SerializedObject(font); // SerializedProperty serializedLineSpacing = serializedFont.FindProperty("m_LineSpacing"); // serializedLineSpacing.floatValue = Mathf.Abs(float.Parse(GetValue(info, "size"))); // serializedFont.ApplyModifiedProperties(); // } // static Material GenerateMaterial(string materialPath, Texture2D texture) // { // Shader shader = Shader.Find(DEFAULT_SHADER); // Material material = LoadAsset(materialPath + ".mat", new Material(shader)); // material.shader = shader; // material.mainTexture = texture; // SaveAsset(material, materialPath + ".mat"); // return material; // } // static Font GenerateFont(string fontPath, string fontName, Material material) // { // Font font = LoadAsset(fontPath + ".fontsettings", new Font(fontName)); // font.material = material; // SaveAsset(font, fontPath + ".fontsettings"); // return font; // } // static string GetValue(XmlNode node, string name) // { // return node.Attributes.GetNamedItem(name).InnerText; // } // static void SaveAsset(Object obj, string path) // { // Object existingAsset = AssetDatabase.LoadMainAssetAtPath(path); // if (existingAsset != null) // { // EditorUtility.CopySerialized(obj, existingAsset); // AssetDatabase.SaveAssets(); // } // else // { // AssetDatabase.CreateAsset(obj, path); // } // } // static T LoadAsset(string path, T defaultAsset) where T : Object // { // T existingAsset = AssetDatabase.LoadMainAssetAtPath(path) as T; // if (existingAsset == null) // { // existingAsset = defaultAsset; // } // return existingAsset; // } //} //#endif //#if UNITY_4 || UNITY_5_1 //#pragma warning restore 0618 //#endif