TextMesh Pro SpriteAsset Load From Assetbundle
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/7471721.html
遇到问题#
我们项目分两个Unity的工程,Art(美术资源工程),Client(代码工程)
在Art工程中的TextMeshProUGUI Text中使用Emoji,打包成AB之后,在Client运行时,spriteAsset的图集是从Resource目录读取出来的
软件环境#
Unity3D 5.3.7p4
TextMesh Pro 1.0.555.0b11(Jul 06.2017)
KSFramework:https://github.com/mr-kelly/KSFramework
从Resource读取SpriteAsset#
TextMesh Pro的Resource目录设置文件TMPSettings.asset 用于设置默认属性,比如默认的字体,图集
在Editor中运行,如果使用了Sprite标签,它会从默认图集中加载(Resource\xxspriteAsset.asset),比如我的设置文件
原理分析#
当Text中使用了Sprite标签时,在运行时,TextPro会生成两个Gameobject:一个Text(渲染文字),SubMesh(渲染图片)
从Assetbundle加载spriteAsset#
分析实现原理之后,我们知道,运行时,SubMesh的SpriteAsset默认是从Resource加载出来的,所以我们要做的就是替换掉SubMesh中 SpriteAsset的图片。
TextMeshPro的Text提供了一个接口方便我们替换掉这张图片
Lua实现的伪代码:
AssetFileLoader.Load("ui/spriteassets/emojidata.asset", function(isoK, result) if not isoK or result:IsNull() then return end for i, tmpText in ipairs(tmpTexts) do tmpText.spriteAsset = result local child = tmpText:GetComponentsInChildren(typeof(CS.TMPro.TMP_SubMeshUI),true) if child then child.spriteAsset = result end end end)
替换SpriteAsset后:
注意查看 SpriteAsset的值,变成从ab中加载了。
文档资料#
TextMesh Pro的资料,可以参考我之前的博客:http://www.cnblogs.com/zhaoqingqing/p/7471499.html
参考资料:http://digitalnativestudios.com/forum/index.php?topic=1018.msg8140#msg8140
本文版权归作者和博客园共有,欢迎转载,转载之后请务必在文章明显位置标出原文链接和作者,谢谢。
如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验
2015-09-19 C# Enum 进行逻辑运算