Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

时间:2024-03-15 19:12:37

废话不多说,使用TexturePacker制作可供TextMesh Pro使用的Sprite Asset(不喜勿喷)

软件版本:

Unity版本 2017.3.1f1 官网下载

TextMesh Pro版本 1.2.2 Unity Asset Store内置免费

TexturePacker版本4.8.2 https://www.codeandweb.com/texturepacker官网下载最新版即可

一、制作Font Asset中文字

Unity中导入TextMesh Pro插件

从系统字库中随便找一个支持中文的字体,我使用的是 华文楷体 常规

准备一个TxT文件,里面放着你想要使用的中文字(TxT的编码格式需要设置成UTF-8)

下面打开字*作面板

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

然后按照顺序设置

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

第一步把从系统字库中找到的字体拖进去,第二步字符集设置选择从文件设置,第三步在新打开的输入框内拖入之前提到的TxT文件

第四步点击按钮浏览图集,右边出现你TxT文件中的字就是成功啦,第五步点击保存Font Asset,中文字体就制作成功了.(其余的设置都是字面意思自己调试吧)

最后将制作的字体拖到组件内就可以使用了.

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

二、制作Sprite Asset

下载TexturePacker PC版安装完毕后直接打开,可能会弹出窗口,选择JSON(Array)

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

选择第三个选项

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

如果没有弹出可以自己点击之后选择

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

然后将要做成图集的资源拖入中间灰色的部分

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

然后在右上角选择Data File的输出路径和Texture File的输出路径,要指到Unity工程下,然后直接保存,最后点击Publish sprite sheet

保存成功

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

然后回到第一步Framework选择Unity Texture2D,然后Data File 和Texture File同名同路径覆盖一次然后再次

点击Publish sprite sheet

保存成功

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

回到Unity中,会有如下三个文件,png的图集,Json格式的图集信息和.tpsheet格式的图集信息

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

然后打开Sprite Importer面板

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

第一个选择框内拖入Json文件,第二个框内拖入图集,然后一次点击下面的两个按钮,出现中间的信息说明成功,然后保存文件到工程内

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

生成的TMP_SpriteAsset文件

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

然后搜索在工程内搜索TMP Settings文件,把Default Sprite Asset替换成刚才做的文件

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

这时候就要可以使用图集了,但是按照这种步骤会发生一些问题,就是图集切割的坐标是乱的,具体为什么我也不太清楚.

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

<sprite=> 是标准格式,id那里填写图集中对应的id即可显示图片,这里图片显示是不正确的

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

后来经过测试发现是图集信息的X和Y的值不对所以在上面做了两次生成图集配置文件,这时候就需要用代码稍微修改一下了(请无视我的变量命名)

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

  1. using UnityEngine;
  2. using TMPro;
  3. using System.IO;
  4. public class HUDTest : MonoBehaviour
  5. {
  6.     [SerializeField]
  7.     private TMP_SpriteAsset m_TMP_SpriteAsset;
  8.     [SerializeField]
  9.     private string m_DefaultAssetFileName;
  10.     private void Awake()
  11.     {
  12.         string str = File.ReadAllText(Application.dataPath + "/"+m_DefaultAssetFileName+".tpsheet");
  13.         string[] strArr = str.Split('\n');
  14.         int i = 0;
  15.         foreach (var item in strArr)
  16.         {    
  17.             if (item.StartsWith("#") || item.StartsWith(":") || string.IsNullOrEmpty(item)|| item.StartsWith("\r"))
  18.             {
  19.                 continue;
  20.             }
  21.             string[] strArr2 = item.Split(';');
  22.             m_TMP_SpriteAsset.spriteInfoList[i].x = float.Parse(strArr2[1]);
  23.             m_TMP_SpriteAsset.spriteInfoList[i].y = float.Parse(strArr2[2]);
  24.             i++;
  25.         }
  26.     }
  27. }
     

将脚本随便挂在一个物体上,我这里路径是写在Assets下然后填上对应的.tpsheet文件名,

将TMP_SpriteAsset文件拖到面板上然后运行

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

坐标修改完成.

Unity TextMesh Pro 制作Font Asset中文 、 Sprite Asset

 

基本上Font Asset中文 和Sprite Asset的制作就完成了,欢迎留言交流经验,不足的地方请大家指正