在Unity 4.x版本中,当需要打包成AssetBundle的资源存在层级引用的时候,需要使用BuildPipeline.PushAssetDependencies等相关函数将资源拆分并建立引用关系,然后在加载的时候按照相反的顺序,先加载依赖文件,再加载目标文件的顺序,将数据还原出来,并自动关联好引用关系。在此过程中第一个加载的文件不能调用AssetBundle.UnLoad(false),即在该过程中,会一直有第一个文件的内存映射冗余在内存中,这对于宝贵的手机内存来说是十分致命的。当然我们也可以自我管理引用关系来规避这种冗余。
现有项目是使用BundleManager 插件,在此基础上添加MD5,用于资源更新和热更新从服务器下载文件时做资源对比。同时在次基础做了一些贴合项目的方便操作。
1.实现了不同平台不同的BundleData文件,来满足不同平台打包上的区别
2.实现了小图标是,有资源更新后,带有感叹号的黄色三角形来做更新提醒
3.为了打包方便,实现快捷使用按钮,策划管理打包,管理美术资源进入项目
源码代码:https://github.com/zhutaorun/SomeTips/tree/master/Assets/BundleManager
最新代码明天更新上去
参考来源: http://blog.uwa4d.com/archives/AB4-x.html
http://blog.uwa4d.com/archives/ABtopic_1.html
官方API:https://docs.unity3d.com/500/Documentation/Manual/BuildingAssetBundles.html