最近遇到一个需求,在聊天框中支持用户的Emoji输入,查了半天资料没有一个能说清楚的,于是自己研究琢磨了下。
最终效果
最终效果可以在APP输入框中使用系统的输入法输入emoji表情并显示,如下
1 制作Emoji图集
1.1 准备好emoji素材
找到emoji图片,注意需要是 unicode.png 格式命名的。github上一些开源项目有这些图,或者到这个链接(提取码: 0uN0 )下载
准备使用。
1.2 下载 TexturePackerGUI 软件
到这个链接下载并安装,打开软件
语言的切换在这里
1.3 制作图集并输出
将Emoji图片文件夹拖入到左侧栏目里,同时右侧的数据格式切记选择 JSON(Array), 而不是 Unity的texture和json格式.
点击发布精灵表,输出保存即可。
2 制作TextMeshPro素材资源
2.1 导入 TextMeshPro 库
项目中在 PackageManager中导入 TextMeshPro , 注意版本为Pre-Release的3.2.x的而不是当前最新的Release 3.0.x
在 Project Settings 可以打开Pre版本的展示
不过可能是网络因素或者中国版因素,很大可能开启了pre版本拉取依旧package manager里不展示,如果这样的话可以到 TextMeshPro的github源码库下载并导入该库
记得将Essential素材导入
2.2 制作 TextMeshPro 的 Sprite Assets
打开 Sprite Importer 开始制作TextMeshPro的SpriteAssets
将1.3制作输出的文件拖入,勾选 use filenames as Unicode
然后Create Sprite Asset,没问题的话会输出结果
再点击 Save Sprite Asset 保存即可
建议将这些素材放到TMP Essential目录里,刚好他里面也有个emoji的demo
3 打出完美的emoji表情
3.1 将上一步的 Sprite Assets 引用到 TextMeshPro 的设置中
选中 TMP Settings 将上一步导出的 Sprite Assets 拖入设置为 Default Sprite Assets
此时就可以测试TextMeshPro打字打emoji了,win10的默认微软输入法和市面上的输入法一般都支持直接打emoji,例如键盘输入拼音 haha 候选里面就会有emoji
UI结果如下所示,不尽人意,图片内容有裁剪和其他内容,并且图片位置下移或不对劲
3.2 调整 TexturePackerGUI 输出的细节
按照如下设置配置 TexturePackerGUI
重要的几个点为布局里的
- 大小限制-POT(2的幂)
- 强制正方形-勾选
- 缩放模式-平滑
- 算法-网格/条带
- 允许旋转-不勾选
做到上述配置,再次导出并制作Sprite Assets, 并在 TMP Settings 里拖入新的Sprite Assets即可观察效果。 建议新制作导出制作Sprite Assets是重新命名保存个新的文件并在TMP重新拖动,防止Unity不更新素材文件等。
到这里,图片可以正常显示了。
不过位置依旧不对,需要将图集的锚点重新设置,按照实际图片的需求设置并导出测试。我使用的emoji图片需要以下设置。
在 TexturePackerGUI 左边的列表随便选中一张图双击进入详情,将锚点设置为下面这样,默认应该是预定义里的中央0.5;0.5 ,自己调整并且点击那个回车按键,这样新导入的图片就会使用这个配置。我这里设置为0.8并且按了回车。然后将左边的图片文件夹选中点 delete 按键删了,重新导入,这时所有图片都是这个锚点配置了,重新点击发布精灵表 即可
最终的效果如图,这样就基本OK了
这个链接(提取码: 3pv3 )可以下载最终导出的json和png直接制作sprite assets
至此,就结束了TextMeshPro制作带unicode的emoji表情功能的sprite assets文章来源:https://www.toymoban.com/news/detail-801561.html
如果您觉得对您有帮助,可以点这里请我喝杯咖啡,同时相关资源也会同步免费发布文章来源地址https://www.toymoban.com/news/detail-801561.html
到了这里,关于Unity中使用TextMeshPro打出Emoji表情的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!