遇到问题

我们项目分两个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

TextMesh Pro SpriteAsset Load From Assetbundle的更多相关文章

  1. TextMesh Pro 超链接解析失败

    前言 软件环境 Unity3D 5.3.7p4 TextMesh Pro 1.0.555.0b11(Jul 06.2017) UGUI做为UI解决方案 文档资料 TextMesh Pro的资料,可以参 ...

  2. TextMesh Pro Emoji Align With Text(表情和文字对齐)

    前言 MMO游戏中需要富文件组件,大体功能包括图文混排,表情,超链接,文字动画等富文本功能,且DC数占用少. 本文选择Unity免费提供的TextMesh Pro 解决方案. 软件环境 Unity3D ...

  3. Unity资源解决方案之AssetBundle

    1.什么是AssetBundle AssetBundle是Unity pro提供的一种用来存储资源的文件格式,它可以存储任意一种Unity引擎能够识别的资源,如Scene.Mesh.Material. ...

  4. Build AssetBundle, missing shader.

    Build AssetBundle, missing shader. 0   My uniy version is 4.1.2f1. Every asset file packing to a sin ...

  5. Unity3D中AssetBundle应用

    工程中的模型等资源转化为Prefab后,打包成AssetBundle,可以大幅降低资源的空间占有度,并且提高资源加载的效率. 一.AssetBundle的打包 先看下打包Prefab的脚本代码,这段脚 ...

  6. unity3d Resources.Load动态加载资源

    初步整理并且学习unity3d资源加载方法,预计用时两天完成入门学习Unity3d常用两种加载资源方案:Resources.Load和AssetBundle Resources.Load就是从一个缺省 ...

  7. Unity—TextMeshPro

    矢量文字,不会因为放大缩小而变的不清晰: 1.TextAsset Window/TextMeshPro/Font Assets Creator 创建TextAsset字体: SourceFont是.t ...

  8. 深入浅出聊优化:从Draw Calls到GC

    前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实,因而给自己“文(dou)学(bi)”加工留下的 ...

  9. 优化 从Draw Calls到GC

    原文出处: 慕容小匹夫的博客(@慕容小匹夫)   欢迎分享原创到伯乐头条 前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章 ...

随机推荐

  1. Java多线程与并发模型之锁

    这是一篇总结Java多线程开发的长文.文章是从Java创建之初就存在的synchronized关键字引入,对Java多线程和并发模型进行了探讨.希望通过此篇内容的解读能帮助Java开发者更好的理清Ja ...

  2. web离线应用--applicationCache

    applicationCache是html5新增的一个离线应用功能 离线浏览: 用户可以在离线状态下浏览网站内容. 更快的速度: 因为数据被存储在本地,所以速度会更快. 减轻服务器的负载: 浏览器只会 ...

  3. 关于 use-default-filters 属性的说明

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7940755.html ------------------------------------ ...

  4. Java语句语法

    一.流程控制语句 1.分支语句 1)if else 语法:(写法1) if(条件1){     //写一次 满足条件1执行在代码 }else if(条件2){    //写0或n次 不满足条件1,满足 ...

  5. Docker理解

    近期一直在研究Docker,感悟颇深,和大家分享一下Docker 在云计算中的应用和Docker的原理. Docker 用法https://yeasy.gitbooks.io/docker_pract ...

  6. 使用DataFlow表达ControlFlow的一些思考

    一.控制流 从接触面向过程语言开始,使用控制流编程的概念已是司空见惯. if (condition) { // do something } else { // do something else } ...

  7. 深入理解Java虚拟机---学习感悟以及笔记

    一.为什么要学习Java虚拟机?       这里我们使用举例来说明为什么要学习Java虚拟机,其实这个问题就和为什么要学习数据结构和算法是一个道理,工欲善其事,必先利其器.曾经的我经常害怕处理内存溢 ...

  8. PhpStorm连接服务器,开始自动上传功能

    连接服务器 菜单栏找到[工具/Tools]->[Deployment/部署]->[Confinguration-/配置-]. 点加号(+),添加一台服务器,填写名称,选择类型为SFTP,点 ...

  9. Tp3.2 和 Tp5.0之间的区别

    5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规 ...

  10. CentOS7 nginx简单配置pathinfo模式(ThinkPHP)

    location ~ \.php {    #去掉$ root          H:/PHPServer/WWW; fastcgi_pass   127.0.0.1:9000; fastcgi_in ...