资源打包方案 效果:(----目前适配过的环境4.6+ unity5.6+)
源码链接:https://blog.youkuaiyun.com/qq_34925263/article/details/79513346(非最新)
如有需求可私q:515300670
a. unity4有一个bundle打包工具,个人觉得使用起来需要手动处理的部分过多,自己实现了一份打包逻辑
b. 因Push + Pop 使用方法不是特别明确,经过多个版本的尝试实现了资源的完全依赖打包
c. 此方案优点:
1. ******* 无脑操作,没有任何多余的冗余资源 ********
2. 可实现最小化更新,如:更改某预制体上的设置,可以实现仅几k的更新量
3. 可实现资源的最小化加载,没有多余重复的资源内存
4. 实现引用计数实时异步加载卸载后,对新开发的游戏 可严格控制资源内存使用
d. 缺点:
1. 文件数量过多,在加载bundle部分,过多的文件操作影响性能,文件管理也需要重视
2. 要实现实时加载卸载,需要配套的加载方案,自己实现依赖加载(需要使用引用计数方案 来控制资源的加载与卸载,引用计数逻辑有问题,资源就可能加载不正常),全资源加载无需考虑
3. unity4 CreateFromFile系统有文件数限制,加载失败报错,但try catch也捕捉不到 使用不超过255为安全,unity5 LoadFromFile据文档说失败会自动转www加载,因已做数量限制,所以这块没有再实测
1-1. 后优化打包方案,只提取大文件格式(png jpg ttf) 单独打一个bundle,其他(如prefab+mat等等)按目录打包成一个bundle,可大幅减少文件数量
2-2. 已实现实时加载方案,并适配Resource.Load接口
e. bundle完全依赖分离 打包效果(下方两截图):打包完成按源目录存放
--------------------------以下是打包源目录----------------------------------
-----------------------------打成bundle---------------------------------
优化后的打包效果(注:上下两截图不是一个项目)
- Resource下除特殊文件格式外,其他资源都按目录打成一个bundle(如 ExtraRes.ab.zip)
-----大文件格式(png jpg ttf) 单独打一个bundle,其他(如prefab+mat等等小文件按目录打包在一起)
- 保留了Asset目录结构
操作方法:
- Build All:
a以Assets/Resource目录为目标目录,打包目录下所有资源及其依赖资源
b我们项目是包含多个游戏,游戏资源存放Games/XXX/, 此操作同时会打包Games下所有Resource目录下资源
- Build Path:打包选择目录下的Resource资源 及其依赖
- Build Sel File:打包单个选中资源 及其依赖
- Build Scenes:打包build setting 选中的场景 及其依赖