博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)[Unity3D]BuildPipeline.PushAssetDependencies 打包依赖包,优化UI Prefab的资源引用加载(坑爹之处)...
阅读量:6173 次
发布时间:2019-06-21

本文共 793 字,大约阅读时间需要 2 分钟。

转自:http://blog.csdn.net/chiuan/article/details/39040421#reply

1:长话短说,UI Prefab中一般会交叉引用Atlas,那么打包时候我们可以动态获取这个prefab的依赖资源,提取Atlas进行独立打包依赖包。实现实例化这个UI先加载依赖包,可以自己实现引用资源计数器,当清空时候Unload(true)完全释放引用的资源依赖包。

2:打包依赖资源实现大概设计如下

push

build 依赖资源1

build 依赖资源2

build 依赖资源...

push

build ui prefab 1

pop

push

build ui prefab 2

pop

pop

 

注意:坑的地方

首先第一步当然先打包依赖包,如果如上,依赖包非常多。其实要清楚理解,同一个push&pop包围中的资源是可以相互依赖的。也就是说第一个build 依赖资源1是个Atlas的prefab,那么下面的资源引用包将不会再独立引入“UIAtla”这个脚本!

这样和我们设计想实现“实现实例化这个UI先加载这个ui的依赖包”,会存在可能的bug,就是东西看不到,并且提示你加载的assetbundle script missing。

 

 

其实就是如顶图,我把左边的绿色注释掉,右边指示是说ui.prefab是引用了atla2里面的贴图,但是打包依赖包却第一个先打包了atla1,加载时候不加载atla1。导致atla2中实际上是没有公用的atla脚本的,会报错并且看不到UI。

 

解决方案,打包NGUI这类atlas时候可以把它们脚本都提取出来如UIAtlas\UIFont,针对脚本独立打一个common包,程序默认会加载这个资源依赖包。

 

坑爹实例:

总结:

依赖打包会关联代码,所有必须严格保证加载assetbundle时按照依赖打包的顺序来进行!!

你可能感兴趣的文章
linux学习笔记九:一般Tarball软件安装流程(以ntp-4.2.4p7.tar.gz为例)
查看>>
数据刷新-界面加载不空白的钥匙
查看>>
一句话搞定webmap(一)——轻地图组件
查看>>
c++数据类型间的转换
查看>>
VIM生疏笔记
查看>>
SQL Server角色成员身份和权限简介
查看>>
获取获取class路径的问题
查看>>
JDK环境变量配置
查看>>
DB分库分表 + 异构引擎
查看>>
华三交换机光电口一起启用导致的冲突
查看>>
同一个磁盘中从根分区缩小空间到扩展SWAP分区空间实践步骤
查看>>
rsync命令
查看>>
Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document 的处理
查看>>
《统一沟通-微软-实战》-6-部署-5-边缘服务器-2012-07-12-1
查看>>
JavaScript一些实用代码记录1
查看>>
ASP.NET MVC的DropDownList
查看>>
使用WebSocket实现网页聊天室
查看>>
C++类成员函数指针使用实例——关于this指针的处理
查看>>
nginx报错 “.configure error C compiler cc is not found”
查看>>
Nginx 编译安装
查看>>