TextMesh Pro SpriteAsset Load From Assetbundle
遇到问题
我们项目分两个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
最新文章
- 4.6 .net core依赖注入的封装
- OpenCV学习笔记(二)——OpenCV环境变量配置
- jQuery性能优化
- WAMP 403 Forbidden禁止访问 的解决办法
- Oracle之ROW_NUMBER() OVER函数
- [zz]Java中的instanceof关键字
- IOS&;swift开发常用的网站
- Java阻塞中断和LockSupport
- Unix Shell 通配符、转义字符、元字符、特殊字符
- MySQL的表分区(转载)
- Android 开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端
- General Structure of Quartz.NET and How To Implement It
- 【故障】当Eclipse打不开的时候
- mvc前端样式自定义
- 1.1 mysql安装
- 自己写的书《深入理解Android虚拟机内存管理》,不出版只是写着玩
- poj 2271HTML
- 命令行登陆mysql提示'mysql' 不是内部或外部命令
- Servlet中的过滤器Filter
- GitHub Desktop 代码库管理工具