项目开发日志:Build AssetBundle——SpriteAtlas(已解惑)

项目信息:
平台-Android
Unity编辑器版本-2018.2.5f1
状况1:真机状况下引用到图集下的sprite的UI显示出错。(图集被打成AB包且勾选了Include in Build).
在我们的测试下发现了以下两个解决方案:(当然我觉得第二个最好)
1.在加载相应UI前,将sprite所属图集(spriteAtlas)提前加载到内存中。(相当麻烦,你得知道自己的sprite属于哪个图集,并且需要相应的一套资源加载的框架)。
2.调用unity提供的回调atlasRequested,手动绑定图集。(untiy2018以后才提供用协程异步加载图集)
解决方法有了,我们来测试一下寻找一下造成这个错误的原因。
测试记录:unity2017.3.0f3 (注意:图集要删了重新弄打包,不然改变include in build再次打AB包,AB包跟着上次的来不变)
SpriteAtlas打AB包,并在场景中加载带sprite引用的UI预制体:
A组:(UnityEditor,不注册事件)
1.勾选Include in Build , 正常显示
2.不勾选Include in Build,不显示,并警告SpriteAtlasManager.atlasRequested wasn't listened to while RGB requested.
B组:(UnityEditor,注册事件)
1.勾选Include in Build,,正常显示,但不触发atlasRequested事件。
2.不勾选Include in Build,正常显示,并触发atlasRequested事件。
C组:(Android真机,不注册事件)
1.勾选Include in Build,不显示,并警告SpriteAtlasManager.atlasRequested wasn't listened to while RGB requested.(我反复确认了3次,应该是uinty这个版本自己的BUG了)
2.不勾选Include in Build,不显示,并警告SpriteAtlasManager.atlasRequested wasn't listened to while RGB requested.
D组:(Android真机,注册事件)
1.勾选Include in Build,正常显示图片,仍然加载atlasRequested事件。(反复确认了两次……)
2.不勾选Include in Build,正常显示图片,触发atlasRequested事件。
总结:
这次测试结果来看,在编辑器下的事件结果(也就是A组和B组)是完全符合Unity官方文档的。
C组1号 和 D组1号是和官方文档的结论好像不太一样。
C组1号勾选了Include in Build居然还是不能正常显示,不过和我们项目开发中遇到的问题是一样的。
D组1号也是出乎我意料的,勾选了Include in Build注册事件,按理说是正常触发且不触发事件的,不过在C组1号的基础上倒是合理,找不到spriteAtlas,于是乎根据事件找到spriteAtlas.
所以C组1号和D组1号其实是一个BUG,那就是android真机上atlas打AB包就算勾了Include in Build也不会找到相关的spriteAtlas(不打AB包还没试过)。
结论:
所以在Android真机打spriteAtlas上我还是建议:不勾选Include in Build用事件来绑定。
参考网页
https://www.litefeel.com/blog/unity-2017-new-sprite-atlas/#comment-28099

转载于:https://www.cnblogs.com/TheChenLin/p/9763710.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

strncat()

将源字符串的前count个字符拷贝到目的字符串中 char *strncat(char *dest, const char *src, size_t count) {assert((NULL ! dest) && (NULL ! dsrc));char *cp dest;if (0 count)//返回原来的{return dest;}while (*cp ! \0){cp ;}while (count-- > 0){if (!(*c…

Sangfor上网行为管理单点登录配置

单点登录功能介绍: 当用户成功登录到第三方认证服务器时,自动通过AC的认证,而无需再次输入用户名和密码。 优点: 用户只需要输入一次账号和密码,即可自动通过AC的认证,避免账号和密码的重复输入&#xff0c…

教你精确计算 I2C 上拉电阻阻值

I2C 总线能挂多少设备?理论上:7-bit address :2 的 7 次方,能挂 128 个设备。10-bit address :2 的 10 次方,能挂 1024 个设备。当然,要把预留设备地址去除,7 bit 协议规定了 8个预留…

原型设计+用户规格说明书

用户规格说明书 作业链接:https://edu.cnblogs.com/campus/fzzcxy/2016SE/homework/2180 原型模型设计工具: 墨刀 原型模型链接:https://modao.cc/app/6a5fcc03e409ffe37cfcdb9cb06914271744f131 学号1:362 何永康 学号2&#xff…

mysql数据库中_截取数据_mysql数据库的字符串截取方法

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。1. 字符串截取:left(str, length)mysql> …

排序算法之希尔排序(C/C++)

从第一个数开始,判断第一个数和n/2那个数的大小,如果v[0]大于v[n/2]就交换,1与3比较,2与4比较,3与5比较............... void shell_sort(char *str, int len) {int group 0, i 0, j 0, temp 0;if ((NULL str) ||…

fedora 忘记root密码

root密码是安装fedora15时设置的,如果你忘记了可以通过下面方法修改。 重启进入grub,在fedora15那一行安e进行编辑,再在以kernel开头的那行安e,在最后添加空格和single,接着安b,启动。 进入没有图形界面的但…

python 多次读取文件的细节

file open("test.txt", encoding"utf8")    #文档以utf8编码读取,不然默认gbk,中文会出现乱码 data file. read() data2 file.read() print(data2) #结果为空,第一次读完指针就停留在末尾,第二次读接…

排序算法之选择法排序(C/C++)

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r…

什么集成mysql_mysql集成部署

经常听说mysql数据库是集成在系统中,也一直不太明白集成的概念。今天才明白集成的概念就是将mysql所有的文件放到一个文件夹下放到系统中,也就是将mysql采用目录迁移部署的方式进行安装。在上一篇研究了mysql的数据存储结构之后,也研究了mysq…

一文让你了解RT-Thread

前言要学习一项新知识或新的技能,首先要对其有个初步了解,然后再逐步学习如何运用它。本文作为快速入门 RT-Thread 系列文章的第一篇,首先介绍一下,我当时是如何学习 RT-Thread 的,以及参与官方组织的活动的情况&#…

Network Service 权限问题

今天在做asp.net的定时删除服务器上的文件时,出了错误,在本地测试都好着呢,可是一部署到服务器上,删除文件的那个方法就不执行,后来在网站查了是Network Service权限设置问题,Network Service 是 Windows S…

创建python虚拟环境

一 windows下如何构建虚拟环境如果系统中只有python2或只有python3,可以直接打开命令行,输入pip install virtualenv 来下载创建虚拟环境的包(如果提示pip不是内部命令,把python文件下的Scripts的文件路径加入计算机环境变量即可可) 1. 选择一…

二分法查找(C/C++)

当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的,默认是按 升序 排好的。时间复杂度:O(logn) 集合中的set和map中使用二分法进行查找的。 int BiSearch(char *str, int n, char find) //返回值是:下标 { int low 0, mi…

电源开关上的 | 和 O 究竟代表了什么?

大家好,我是写代码的篮球球痴,转发张老师的一篇文章。几乎所有的电器、灯具和插座上只要带有电源开关必然会出现“|”和“O”两个符号。如果只看符号判断,“|”和“O”到底代表什么含义呢?能分清:哪个是电路联通,哪个是…

python卸载模块的方法汇总_Python卸载模块的方法汇总

easy_install 卸载通过easy_install 安装的模块可以直接通过 easy_install -m PackageName 卸载,然后删除\python27\Lib\site-packages目录下的egg。setup.py 卸载通过发行包附带的setup.py安装的模块,首选setup.py提供的uninstall选项。如果作者没有提供…

最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用8

辞职创业吴言在经过了几天的反复思考,终于下定决心辞职创业了。做出这个决定真的需要很大的勇气,因为自己的年纪做为程序员来说,已经属于很高龄了,如果创业失败几乎没有退路,再找工作将很难,合适的工作几乎…

重庆大二学生花了6年写出了操作系统

一直以来,国内操作系统都是弱势的地方,可能是国情原因吧,事实上国内也有不少人想改变这种格局,一直以来,笔者的朋友也在一直为这个方向努力,xbook内核,作者花了6年时间,从初中开始就…

逆转一个链表

在一个list中,我们先让头结点的next域指向结点2,再让结点1的next域指向结点3,最后将结点2的next域指向结点1,就完成了第一次交换,顺序就变成了Header-结点2-结点1-结点3-结点4-NULLtypedef struct _list_t{struct _lis…

Django form choices, placeholder

itemCharField(max_length20,min_length1,requiredTrue,widgetwidgets.TextInput({placeholder:testing,}),) typeCharField(min_length1,max_length4,requiredTrue,widgetSelect(choices((0,P),(1,M))),) 转载于:https://www.cnblogs.com/pythonClub/p/9782147.html