TH1/MD/GameMDInDetail/SpriteAsset系统详解.md
2026-04-13 15:15:08 +08:00

2.4 KiB
Raw Blame History

TextMeshPro 图文混排自动化管线流程

前提条件美术已经按照规范命名全英数字无空格、正方形比例、贴边无多余留白将表情碎图PNG格式放置在指定的源文件夹中。

Step 1: 检查与收集图片资源

遍历美术准备的源文件夹,检查所有图片文件是否合规:

  • 检查文件后缀是否为 .png
  • 检查文件名是否合法(仅包含小写英文、数字、下划线,严禁空格或中文字符),因为文件名将作为富文本调用的标识。
  • (可选)检查图片宽高尺寸是否符合约定的统一规格。 验证通过后,将合格的碎图加载到内存中准备处理。

Step 2: 自动合并大图 (PackTextures)

在内存中创建一张空白大图,使用引擎接口(如 Texture2D.PackTextures)将收集到的所有碎图拼贴到一起。 在此过程中代码需记录下每张小图在拼合后大图上的位置和尺寸信息Rect随后将这张大图导出并保存为项目里的一张新 PNG 实体文件。

Step 3: 自动设置大图切分属性 (Sprite Slicing)

通过代码获取刚刚生成大图的 TextureImporter

  • 将贴图类型修改为 Sprite (2D and UI)
  • 将 Sprite Mode 修改为 Multiple
  • 利用 Step 2 中记录的位置信息和对应的原文件名自动写入切片数据SpriteMetaData完成大图的精准切分与命名。 保存 Importer 设置并刷新 AssetDatabase。

Step 4: 自动生成 TMP_SpriteAsset 资产

基于已经切分好的大图资源,通过代码创建 TextMeshPro 专用的表情资产:

  • 实例化一个 TMP_SpriteAsset 对象。
  • 将切分好的大图赋值给该对象的图集属性。
  • 根据切片信息构建 TMP 内部需要的字符映射表SpriteCharacterTable和排版信息表SpriteGlyphTable高版本亦可通过调用 TMP 的编辑器内部方法一键转换)。
  • 将生成的 .asset 文件保存到项目目录中。

Step 5: 最终关联与使用

  • 全局关联:将生成的 TMP_SpriteAsset 填入项目设置里的 Default Sprite Asset 中,或添加至你目前主中文字体的 Fallback 列表中。
  • 代码/配表调用:原有文字搜集流程无需修改。配置文本或动态赋值时,直接插入 <sprite name="图标名">(如 <sprite name="smile">)即可正常显示图文混排。