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,如需转载请自行联系原作者

相关文章
Python模块——glob模块详解
Python模块——glob模块详解
Python模块——glob模块详解
|
Java Maven
关于The POM for xxxxxx:jar:s missing, no dependency information avail 问题的解决
关于The POM for xxxxxx:jar:s missing, no dependency information avail 问题的解决
1398 1
使用 Playwright 复用 Cookie:简化自动化测试的高效方法
Playwright 提供的 Cookie 复用功能允许在不同测试用例间共享会话状态,提高测试效率。通过 `context.set_cookies()` 方法设置共享 Cookie 数据,确保会话在多个测试中保持一致。优点包括节省时间、维持稳定会话,但需注意可能增加测试用例间的依赖。使用此功能可优化自动化测试流程。
|
弹性计算 负载均衡 网络安全
阿里云弹性EIP和固定公网IP的区别
阿里云弹性公网IP(EIP)和固定IP均可以提供外网访问服务,那么二者有什么区别呢?
6570 0
阿里云弹性EIP和固定公网IP的区别
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错之遇到报错org.postgresql.util.psqlexception: The connection attempt failed.,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
数据采集 人工智能 数据挖掘
【AI大模型应用开发】【附】常用Prompt记录 - 论文全文写作
【AI大模型应用开发】【附】常用Prompt记录 - 论文全文写作
2358 0
【AI大模型应用开发】【附】常用Prompt记录 - 论文全文写作
让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题
让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题
|
JSON 编译器 Go
Golang深入浅出之-结构体标签(Tags):JSON序列化与反射应用
【4月更文挑战第22天】Go语言结构体标签用于添加元信息,常用于JSON序列化和ORM框架。本文聚焦JSON序列化和反射应用,讨论了如何使用`json`标签处理敏感字段、实现`omitempty`、自定义字段名和嵌套结构体。同时,通过反射访问标签信息,但应注意反射可能带来的性能问题。正确使用结构体标签能提升代码质量和安全性。
1120 0
|
运维 监控 前端开发
阿里云数据库发展历程及产品简介(一)
阿里云数据库发展历程及产品简介(一)
1050 0
|
存储 编译器
函数栈帧深度剖析(一篇带你牢牢掌握函数栈帧)(二)
函数栈帧深度剖析(一篇带你牢牢掌握函数栈帧)(二)
590 1