/// <summary> /// 利用TexturePack打包图集信息 /// </summary> void TexturePackGUI() { EditorGUI.BeginChangeCheck(); this.m_TPTextSheet = (EditorGUILayout.ObjectField("TP数据(Json)", this.m_TPTextSheet, typeof(TextAsset), false, new GUILayoutOption[0]) as TextAsset); GUILayout.Space(5); this.m_TextureSource = (EditorGUILayout.ObjectField("TP合图", this.m_TextureSource, typeof(Texture2D), false, new GUILayoutOption[0]) as Texture2D); if (EditorGUI.EndChangeCheck()) { this.m_ConsoleContent = string.Empty; } if (m_TPTextSheet == null || m_TextureSource == null) { return; } GUILayout.Space(10f); if (GUILayout.Button("生成", new GUILayoutOption[0])) { this.m_ConsoleContent = string.Empty; TP.TexturePackJsonData spriteDataObject = JsonUtility.FromJson <TP.TexturePackJsonData>(this.m_TPTextSheet.text); m_FontSpriteInfoList = CreateSpriteInfoList(spriteDataObject); string text = string.Empty; text = EditorUtility.SaveFilePanel("保存富文本数据", new FileInfo(AssetDatabase.GetAssetPath(this.m_TPTextSheet)).DirectoryName, this.m_TPTextSheet.name, "asset"); if (text.Length == 0) { return; } this.SaveSpriteAsset(text); } }
private List <TexturePackSprite> CreateSpriteInfoList(TP.TexturePackJsonData spriteDataObject) { List <TP.SpriteData> frames = spriteDataObject.frames; List <TexturePackSprite> list = new List <TexturePackSprite>(); for (int i = 0; i < frames.Count; i++) { TexturePackSprite spriteData = new TexturePackSprite(); spriteData.id = i; spriteData.name = Path.GetFileNameWithoutExtension(frames[i].filename); spriteData.hashCode = spriteData.name.GetHashCode(); spriteData.x = frames[i].frame.x; spriteData.y = (float)this.TextureSource.height - (frames[i].frame.y + frames[i].frame.h); spriteData.width = frames[i].frame.w; spriteData.height = frames[i].frame.h; spriteData.pivot = frames[i].pivot; spriteData.rotated = frames[i].rotated; spriteData.xAdvance = spriteData.width; spriteData.scale = 1f; spriteData.xOffset = 0f - spriteData.width * spriteData.pivot.x; spriteData.yOffset = spriteData.height - spriteData.height * spriteData.pivot.y; list.Add(spriteData); int pos = spriteData.name.LastIndexOf("_"); if (pos > 0) { string key = spriteData.name.Substring(0, pos); string aniIndex = spriteData.name.Substring(pos + 1, spriteData.name.Length - pos - 1); if (!RichTextAnimateDic.ContainsKey(key)) { RichTextAnimate richTextAnimate = new RichTextAnimate(); RichTextAnimateDic.Add(key, richTextAnimate); } //动画 spriteData.animatGroup = key; spriteData.animatIndex = int.Parse(aniIndex); RichTextAnimateDic[key].animateName = key; RichTextAnimateDic[key].frameCount++; RichTextAnimateDic[key].spriteList.Add(spriteData); } } return(list); }
private List <BMFontSprite> CreateSpriteInfoList(TP.TexturePackJsonData spriteDataObject) { List <TP.SpriteData> frames = spriteDataObject.frames; List <BMFontSprite> list = new List <BMFontSprite>(); for (int i = 0; i < frames.Count; i++) { BMFontSprite fontData = new BMFontSprite(); fontData.id = i; fontData.name = Path.GetFileNameWithoutExtension(frames[i].filename); fontData.hashCode = fontData.name.GetHashCode(); int num = fontData.name.IndexOf('-'); // int ascii; string key = string.Empty; int pos = fontData.name.LastIndexOf("_"); if (pos == -1) { key = fontData.name; pos = fontData.name.Length; } else { key = fontData.name.Substring(pos + 1, fontData.name.Length - pos - 1); } fontData.key = key; fontData.group = fontData.name.Substring(0, pos); fontData.x = frames[i].frame.x; fontData.y = (float)this.m_TextureSource.height - (frames[i].frame.y + frames[i].frame.h); fontData.width = frames[i].frame.w; fontData.height = frames[i].frame.h; fontData.pivot = frames[i].pivot; fontData.xAdvance = fontData.width; fontData.scale = 1f; fontData.xOffset = 0f - fontData.width * fontData.pivot.x; fontData.yOffset = fontData.height - fontData.height * fontData.pivot.y; list.Add(fontData); } return(list); }