可以使用TextMeshPro提供的富文本标签来添加表现图片。这里会使用到<sprite>标签,具体的制作步骤如下:

准备打包的图集

我们可以使用TexturePacker工具制作表情图集,首先我们得表情图片是相同得大小。我们在制作的时候,需要使用2的幂次方的生成方式,否则会在Unity中使用被Unity强行扩展成2幂次方图片导致表情全部错位。

我们使用Json的数据格式生成图集,会得到2个文件,一个图集文件和一个Json的描述文件

工程中制作TextMeshPro Sprite

我们把先导出的2个文件放入游戏资源文件夹下面,然后点击下面菜单:

然后会打开如下界面

我们把对应的Json和Texture赋值进去,点击CreateSpriteAssset按钮生成,然后点击Save Sprite Asset保存在一个位置。

我们把上面保存的资源需要在Project Seetting中进行下设置:

在程序中使用

做好上面2步,我们可以在游戏中调用这些图标了,使用sprite标签

<sprite="Emjio" name="1f4a4">

sprite赋值位我们第二步生成的资源名字

name赋值位单图的名字,我们可以选中Emjio文件在属性面板中查看

错位问题解决

往往有时候我们做出来的,显示的Emjio是错位的,比如左右偏移不对,上下偏移不对,比如图片比文字显示的低或则多个图片没有相隔开重叠在一起,这种问题可以在第二步生成的Emjio资源中进行修改:

我们打开Sprite Glyph Table 标签,这里面会显示每个标签的样式和偏移。我们需要注意BX,BY,AD这几个参数,一般会不正常,我们需要调整下。

  • BX: 离左边的偏移,如果看见与其它文本相距远就调这个
  • BY:上下偏移,如果显示在文本下部就调整这个
  • AD:图片框的大小,如果是0就会重叠在一起。

这3个参数是能在这个同一调整:

不对就来调整这里,可是运行中看效果的,分别调整一下就知道啥意思了。