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),比如我的设置文件

image

 

原理分析

当Text中使用了Sprite标签时,在运行时,TextPro会生成两个Gameobject:一个Text(渲染文字),SubMesh(渲染图片)

image

image

 

从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中加载了。

image

 

文档资料

TextMesh Pro的资料,可以参考我之前的博客:http://www.cnblogs.com/zhaoqingqing/p/7471499.html

参考资料http://digitalnativestudios.com/forum/index.php?topic=1018.msg8140#msg8140




本文出自赵青青,原文链接:http://www.cnblogs.com/zhaoqingqing/p/7471721.html,如需转载请自行联系原作者

相关文章
|
6月前
Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load
Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load
|
安全 Python
YAML+PyYAML笔记 8 | PyYAML源码之full_load(),full_load_all(),safe_load(),unsafe_load(),unsafe_load_all()
YAML+PyYAML笔记 8 | PyYAML源码之full_load(),full_load_all(),safe_load(),unsafe_load(),unsafe_load_all()
125 1
|
Web App开发 前端开发 JavaScript
DevTools failed to load SourceMap Could not load content for chrome-extension 解决
DevTools failed to load SourceMap Could not load content for chrome-extension 解决
245 0
|
存储
OC:关于Category、load、initialize的那些事你还记得吗?
这篇文章主要分析Category的实现原理,load方法和initialize方法调用方式、调用时机、调用顺序、以及他们的区别,解释 Catgory 与 class Extension 有什么区别。
156 0
|
iOS开发
iOS - +load 和 + initialize的区别
iOS - +load 和 + initialize的区别
|
测试技术 Android开发 iOS开发
Windows 上 Assimp(Open Asset Import Library) 源码的编译 及 Samples 的编译运行
Windows 上 Assimp(Open Asset Import Library) 源码的编译 及 Samples 的编译运行
394 0
Windows 上 Assimp(Open Asset Import Library) 源码的编译 及 Samples 的编译运行
|
PHP
YII2 配置gii之后页面404 解决 2点=1 要加载model,2 要设置环境为dev,如下截图 3次要---有时候可能需要 执行composer dump-autoload 重新加载类
YII2 配置gii之后页面404  解决 2点=1 要加载model,2 要设置环境为dev,如下截图 解决成功     我的是这么解决的
1168 0