需要下载TextMeshPro 3.2.x-pre.xxx版本,重新生成Sprite Asset文件解决
注意:若Package Manager没有搜到pre版本,那么可以去github下载到本地,再解压后,将文件夹移动到工程Packages文件夹下,然后打开Package Manager,点击+号, add package from disk 选择项目Packages/com.unity.textmeshpro-x.x.x-pre.xx文件夹下的package.json文件,等待加载
然后点击TMP Essential Resources,等待下载
Releases · needle-mirror/com.unity.textmeshpro · GitHub
创建表情包步骤基本不变,使用TexturePacker生成json array文件和png图集,然后去window->TextMeshPro -> Sprite Importer,use filenames as Unicodes 勾选,然后点击create sprite asset 生成Sprite Asset。【这步骤网上很多教程】
这个文件赋值给TextMeshPro(UGUI)组件的Sprite Asset公共字段,拖拽赋值。
也可以代码里动态赋值,只要文本出现有<sprite="SpriteAssetName" index=xxx>,就会自动回调一个函数,函数会传递Sprite Asset资源名,即SpriteAssetName,然后你可以使用这个名字从Resources文件夹或别的方式加载出这个SpriteAsset资源return。
TMPro.TextMeshPro.OnSpriteAssetRequest += (num, spriteAssetName) =>
{
return Resources.Load<TMPro.TMP_SpriteAsset>(spriteAssetName);
};
这里我直接return 从Resources文件夹加载出的资源,项目情况可以优化下将资源加载出后,再缓存起来不需要每次都去加载,因为这个函数真的是每次文本刷新都会触发的。