• (转)[Unity3D]BuildPipeline.PushAssetDependencies 打包依赖包,优化UI Prefab的资源引用加载(坑爹之处)


    转自: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时候可以把它们脚本都提取出来如UIAtlasUIFont,针对脚本独立打一个common包,程序默认会加载这个资源依赖包。

    坑爹实例:http://pan.baidu.com/s/1k3yKe

    总结:

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

  • 相关阅读:
    A1042 Shuffling Machine (20)
    【SSM 4】Mybatis逆向生成工具
    【SSM 4】Mybatis逆向生成工具
    【SSM 3】Mybatis应用,和Hibernate的区别
    【SSM 3】Mybatis应用,和Hibernate的区别
    【SSM 2】spring常用注解
    【SSM 2】spring常用注解
    【SSM 1】SpringMVC、Spring和Struts的区别
    【SSM 1】SpringMVC、Spring和Struts的区别
    【java基础 5】树形结构数据加载的思考
  • 原文地址:https://www.cnblogs.com/wonderKK/p/4264805.html
Copyright © 2020-2023  润新知