找回密码
 立即注册
查看: 343|回复: 0

Unity 图文混排 生成SpriteAsset

[复制链接]
发表于 2022-5-24 11:03 | 显示全部楼层 |阅读模式
生成Sprite Asset

    TexturePacker 生成json、png

image

    TexturePacker 生成 tpsheet、png

image

    生成文件对比 json与 tpsheet,最终tpsheet中位置和大小数据为最终准确数据。

image


image

    打开Sprite Importer

image


image

5.导出之后会遇到切割位置信息不对,这时候需要用tpsheet中的数据设置一次。

image


    使用tpsheet 文件重新赋值(位置,大小等属性)

    image

Open EditorSpriteAsset Window 代码(可以直接copy使用但是需要注意tpsheet路径)

using System.IO;using TMPro;using UnityEditor;using UnityEngine;using UnityEngine.TextCore;namespace CS{    public class EditorSpritesAsset : EditorWindow    {        [MenuItem("Tools/EditorSpritesAsset")]        public static void ShowSceneWindows()        {            EditorWindow win = GetWindow(typeof(EditorSpritesAsset), false,"编辑图集",true);            win.Show();        }        private TMP_SpriteAsset mSprAss = null;        private void OnGUI()        {            mSprAss = EditorGUILayout.ObjectField(mSprAss, typeof(TMP_SpriteAsset            )) as TMP_SpriteAsset;            if (GUILayout.Button("确定" , GUILayout.Width(50), GUILayout.Height(20)))            {                RefreshSpritesAsset();            }        }        private void EditorSpriteAsset()        {            //此处为tpsheet文件所在的路径,读取文件中的数据            string str = File.ReadAllText(Application.dataPath + "/TextMesh Pro/Sprites/"+mSprAss.name+".tpsheet");            string[] strArr = str.Split('\n');            int i = 0;            GlyphRect glyphRectTmp = new GlyphRect(0, 0, 0, 0);            GlyphMetrics glyphMetrics = new GlyphMetrics();            foreach (var item in strArr)            {                    if (item.StartsWith("#") || item.StartsWith(":") || string.IsNullOrEmpty(item)|| item.StartsWith("\r"))                {                    continue;                }                string[] strArr2 = item.Split(';');                glyphRectTmp.x = int.Parse(strArr2[1]);                glyphRectTmp.y = int.Parse(strArr2[2]);                glyphRectTmp.width = int.Parse(strArr2[3]);                glyphRectTmp.height = int.Parse(strArr2[4]);                mSprAss.spriteGlyphTable.glyphRect = glyphRectTmp;                glyphMetrics = mSprAss.spriteGlyphTable.metrics;                glyphMetrics.horizontalBearingX = 0;                glyphMetrics.horizontalBearingY = int.Parse(strArr2[4])-5;                mSprAss.spriteGlyphTable.metrics = glyphMetrics;                i++;            }        }    }}

image

    完毕

image

8.最后找到TMP Settings 配置文件,将新生成的Sprite Asset 设置为默认。

image

9.直接设置图片名字就可以生效。
"You must earn 1 <sprite name="currency_diamond_big"/> character if you recruit 10 times"

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 09:29 , Processed in 0.094325 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表