Unity手游汉化笔记④:UABE+AssetStudio替换TMPro字体

廉价感情. 提交于 2020-03-17 08:10:12

总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html


  TMPro,完整的叫TextMeshPro,原本是个插件,后来Unity逐渐做成了内置,主要特点是在放大之后不会模糊,逐渐成为主流,但是他的字库是需要自己制作的,而不是直接用的字体文件,随之而来的缺点就是字库没办法做得足够完整,也失去了动态字体。关于TMPro的汉化,分成两个部分,文字和字体,本文讲字体替换,文字的修改请看这篇:Unity手游汉化笔记①:UABE+AssetStudio编辑MonoBehavior类型Asset

 一、使用工具:

  Unity版本:2018.4.5f1
  AssetStudio(地址:https://www.perfare.net/tag/assetstudio
  UABE(地址:https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor

二、字体替换

1.用Unity做一个简单的Demo

  效果如下:

   做Demo的过程中你应该会发现,一个TMPro的字体以一个SDF结尾的Asset文件呈现,展开后如下:

  实际上还有一个MonoBehaviour,整体类似于BMFont,所以我在替换的时候和BMFont思路类似,通过维持设置来保证纹理不变化,只替换MonoBehavior和图片

2.获得新字体

  先用Asset Studio来预览,打开并加载Data文件夹(Android的话在Asset/bin/Data),在MonoBehavior分类下,会找到一个simfang SDF,这就是我们的字体最关键的部分了,一般TMPro的字体都会以SDF结尾,他的参数列表很长,如下:

  我们根据这里面的一些信息来制作新字体的Demo,使用相同版本的Unity来制作。

  在Unity中,先从菜单栏-Window-TextMeshPro-FontAssetCreator调出Font Asset Creator,这里的设置在MonoBehavior中体现在了m_CreationSettings部分,可以把Asset Studio中的参数列表放进一个编辑器里,用搜索功能找到他,我们要保持设置,具体如下:

  Sampling Point Size 对应右侧pointSizeSamplingMode和pointSize

  Padding对应右侧padding

  Packing Method对应右侧packingMode

  Atlas Resolution对应atlasWidth和atlasHeight

  Character Set及其随后小方框对应右侧characterSetSelectionMode、characterSequence、referencedFontAssetGUI、referencedTextAssetGUID

  Render Mode对应右侧renderMode(看不懂对应关系,好在一般都是默认值)

  Get Kerning Pairs对应右侧includeFonrFeatures

  Generate Font Atlas后就得到了图片,Save之后就得到了Asset文件,随便弄个Text,把字体绑上去,然后生成整个项目

3.替换

  剩下的步骤就和替换BMFont的时候基本一样了,用UABE导出新旧字体的图片、MonoBehavior参数文本,图片直接导回去,MonoBehavior要做以下修改:

  ① 指针部分,把参数文本复制到带搜索功能的编辑器里,先搜索关键词“pathid”(关闭大小写匹配),有几个部分:

    最开头的m_GameObject和m_Script:这是MonoBehavior都需要的,应该保持旧的数值

    material:这是一个关键的东西,字体绑定的纹理,这里也要维持旧的数值

    m_AtlasTextures:指向图片,也要维持旧的数值

    其他的匹配项都是0,不用管。

  ② 哈希值,搜索关键词“hash”和“guid”,各有两处匹配,这两个我也选择了保留旧的数值,以免出错

4.结果

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!