169 lines
6.2 KiB
C#
169 lines
6.2 KiB
C#
|
//#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<Material>(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<Font>(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<T>(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
|