/// <summary> /// /// </summary> /// <param name="spriteDataObject"></param> /// <param name="spriteCharacterTable"></param> /// <param name="spriteGlyphTable"></param> private static void PopulateSpriteTables(TexturePacker_JsonArray.SpriteDataObject spriteDataObject, List <TMP_SpriteCharacter> spriteCharacterTable, List <TMP_SpriteGlyph> spriteGlyphTable) { List <TexturePacker_JsonArray.Frame> importedSprites = spriteDataObject.frames; float atlasHeight = spriteDataObject.meta.size.h; for (int i = 0; i < importedSprites.Count; i++) { TexturePacker_JsonArray.Frame spriteData = importedSprites[i]; TMP_SpriteGlyph spriteGlyph = new TMP_SpriteGlyph(); spriteGlyph.index = (uint)i; spriteGlyph.metrics = new GlyphMetrics((int)spriteData.frame.w, (int)spriteData.frame.h, -spriteData.frame.w * spriteData.pivot.x, spriteData.frame.h * spriteData.pivot.y, (int)spriteData.frame.w); spriteGlyph.glyphRect = new GlyphRect((int)spriteData.frame.x, (int)(atlasHeight - spriteData.frame.h - spriteData.frame.y), (int)spriteData.frame.w, (int)spriteData.frame.h); spriteGlyph.scale = 1.0f; spriteGlyphTable.Add(spriteGlyph); TMP_SpriteCharacter spriteCharacter = new TMP_SpriteCharacter(0, spriteGlyph); spriteCharacter.name = spriteData.filename.Split('.')[0]; spriteCharacter.scale = 1.0f; spriteCharacterTable.Add(spriteCharacter); } }
void DrawEditorPanel() { // label GUILayout.Label("Import Settings", EditorStyles.boldLabel); EditorGUI.BeginChangeCheck(); // Sprite Texture Selection m_JsonFile = EditorGUILayout.ObjectField("Sprite Data Source", m_JsonFile, typeof(TextAsset), false) as TextAsset; m_SpriteDataFormat = (SpriteAssetImportFormats)EditorGUILayout.EnumPopup("Import Format", m_SpriteDataFormat); // Sprite Texture Selection m_SpriteAtlas = EditorGUILayout.ObjectField("Sprite Texture Atlas", m_SpriteAtlas, typeof(Texture2D), false) as Texture2D; if (EditorGUI.EndChangeCheck()) { m_CreationFeedback = string.Empty; } GUILayout.Space(10); GUI.enabled = m_JsonFile != null && m_SpriteAtlas != null && m_SpriteDataFormat != SpriteAssetImportFormats.None; // Create Sprite Asset if (GUILayout.Button("Create Sprite Asset")) { m_CreationFeedback = string.Empty; // Read json data file if (m_JsonFile != null) { switch (m_SpriteDataFormat) { case SpriteAssetImportFormats.TexturePackerJsonArray: TexturePacker_JsonArray.SpriteDataObject jsonData = null; try { jsonData = JsonUtility.FromJson <TexturePacker_JsonArray.SpriteDataObject>(m_JsonFile.text); } catch { m_CreationFeedback = "The Sprite Data Source file [" + m_JsonFile.name + "] appears to be invalid or incorrectly formatted."; } if (jsonData != null && jsonData.frames != null && jsonData.frames.Count > 0) { int spriteCount = jsonData.frames.Count; // Update import results m_CreationFeedback = "<b>Import Results</b>\n--------------------\n"; m_CreationFeedback += "<color=#C0ffff><b>" + spriteCount + "</b></color> Sprites were imported from file."; if (m_SpriteAsset != null) { DestroyImmediate(m_SpriteAsset); } // Create new Sprite Asset m_SpriteAsset = CreateInstance <TMP_SpriteAsset>(); // Assign sprite sheet / atlas texture to sprite asset m_SpriteAsset.spriteSheet = m_SpriteAtlas; List <TMP_SpriteGlyph> spriteGlyphTable = new List <TMP_SpriteGlyph>(); List <TMP_SpriteCharacter> spriteCharacterTable = new List <TMP_SpriteCharacter>(); PopulateSpriteTables(jsonData, spriteCharacterTable, spriteGlyphTable); m_SpriteAsset.spriteCharacterTable = spriteCharacterTable; m_SpriteAsset.spriteGlyphTable = spriteGlyphTable; } break; } } } GUI.enabled = true; // Creation Feedback GUILayout.Space(5); GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Height(60)); { EditorGUILayout.LabelField(m_CreationFeedback, TMP_UIStyleManager.label); } GUILayout.EndVertical(); GUILayout.Space(5); GUI.enabled = m_JsonFile != null && m_SpriteAtlas && m_SpriteInfoList != null && m_SpriteAsset != null; if (GUILayout.Button("Save Sprite Asset") && m_JsonFile != null) { string filePath = EditorUtility.SaveFilePanel("Save Sprite Asset File", new FileInfo(AssetDatabase.GetAssetPath(m_JsonFile)).DirectoryName, m_JsonFile.name, "asset"); if (filePath.Length == 0) { return; } SaveSpriteAsset(filePath); } GUI.enabled = true; }
void DrawEditorPanel() { // label GUILayout.Label("Import Settings", EditorStyles.boldLabel); EditorGUI.BeginChangeCheck(); // Sprite Texture Selection m_JsonFile = EditorGUILayout.ObjectField("Sprite Data Source", m_JsonFile, typeof(TextAsset), false) as TextAsset; m_SpriteDataFormat = (EmojiSpriteAssetImportFormats)EditorGUILayout.EnumPopup("Import Format", m_SpriteDataFormat); //EditorGUILayout.HelpBox("Use this parameters to convert EmojiData Format to TexturePacket Json format", MessageType.Info); if (m_SpriteDataFormat == EmojiSpriteAssetImportFormats.EmojiDataJson) { using (new EditorGUILayout.VerticalScope("box")) { EditorGUILayout.LabelField("EmojiOne Fields", EditorStyles.boldLabel); GUILayout.Space(3); m_gridSize = EditorGUILayout.Vector2IntField("Grid Size", m_gridSize); m_padding = EditorGUILayout.Vector2IntField("Padding", m_padding); m_spacing = EditorGUILayout.Vector2IntField("Spacing", m_spacing); m_globalGlyphScale = EditorGUILayout.Slider("Glyph Scale", m_globalGlyphScale, 0.01f, 5f); GUILayout.Space(3); } } // Sprite Texture Selection m_SpriteAtlas = EditorGUILayout.ObjectField("Sprite Texture Atlas", m_SpriteAtlas, typeof(Texture2D), false) as Texture2D; if (EditorGUI.EndChangeCheck()) { m_CreationFeedback = string.Empty; } GUILayout.Space(10); GUI.enabled = m_JsonFile != null && m_SpriteAtlas != null && m_SpriteDataFormat != EmojiSpriteAssetImportFormats.None; // Create Sprite Asset if (GUILayout.Button("Create Sprite Asset")) { m_CreationFeedback = string.Empty; var jsonFileText = m_JsonFile != null ? m_JsonFile.text : string.Empty; if (m_SpriteDataFormat == EmojiSpriteAssetImportFormats.EmojiDataJson) { jsonFileText = EmojiDataConversorUtility.ConvertToTexturePackerFormat(jsonFileText, m_gridSize, m_padding, m_spacing); } m_CreatedWithEmojiJson = m_SpriteDataFormat == EmojiSpriteAssetImportFormats.EmojiDataJson; // Read json data file if (m_JsonFile != null && m_SpriteDataFormat != EmojiSpriteAssetImportFormats.None) { #if TMP_2_1_0_PREVIEW_1_OR_NEWER TexturePacker_JsonArray.SpriteDataObject sprites = JsonUtility.FromJson <TexturePacker_JsonArray.SpriteDataObject>(jsonFileText); #else TexturePacker.SpriteDataObject sprites = JsonUtility.FromJson <TexturePacker.SpriteDataObject>(jsonFileText); #endif if (sprites != null && sprites.frames != null && sprites.frames.Count > 0) { int spriteCount = sprites.frames.Count; // Update import results m_CreationFeedback = "<b>Import Results</b>\n--------------------\n"; m_CreationFeedback += "<color=#C0ffff><b>" + spriteCount + "</b></color> Sprites were imported from file."; // Create sprite info list m_SpriteInfoList = CreateSpriteInfoList(sprites); } } } GUI.enabled = true; // Creation Feedback GUILayout.Space(5); GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Height(60)); { EditorGUILayout.LabelField(m_CreationFeedback, TMP_UIStyleManager.label); } GUILayout.EndVertical(); GUILayout.Space(5); GUI.enabled = m_JsonFile != null && m_SpriteAtlas && m_SpriteInfoList != null && m_SpriteInfoList.Count > 0; // Enable Save Button if font_Atlas is not Null. if (GUILayout.Button("Save Sprite Asset") && m_JsonFile != null) { string filePath = EditorUtility.SaveFilePanel("Save Sprite Asset File", new FileInfo(AssetDatabase.GetAssetPath(m_JsonFile)).DirectoryName, m_JsonFile.name, "asset"); if (filePath.Length == 0) { return; } SaveSpriteAsset(filePath); } GUI.enabled = true; }
List <TMP_Sprite> CreateSpriteInfoList(TexturePacker_JsonArray.SpriteDataObject spriteDataObject)