DragonWind

关于AssetBundle

UnityEditor.Editor.finishedDefaultHeaderGUI += OnPostHeaderGUI;

看AB包不下N次了,常看常新,常看常忘,随便写写

老规矩,先走官方文档,这篇写的还可以

高级教程

垃圾整合

这里先不管Resources,讲烂了的东西,要么别用要么放点小东西

主要是现在Unity出了个新管线叫Scriptable Build Pipeline这里,说是建议用这个,emm,建议用

然后YooAsset是用的SBP

其实其他的都无所谓,最主要的是处理依赖,依赖主要是

打包时候

打包方式只有最适合的,没有【最好】的。

如果是纯的每个文件打个包,那【应该】不会有资源冗余,但是会有十几万个?AB小包,这样每次开个文件打开缓存,IO要爆炸;要么集合成AXP,后话

如果是收集某个打个打包,也OK吧?

感觉最好是根据使用频率来打包?

比如公共图集打一个

新手场景会用得到的一些可以打在一起?

关键是在某段时间内,打开的Bundle个数控制一下

这个strategy值得慢慢研究

加载时候

加载的时候顺便把所有依赖的Bundle也加载,没啥讲的

卸载时候

一般提供一个ClearAll接口,用来卸载没用的资源,至少YooAsset是这样?

就是看引用,某个引用<=0就可以干掉?

AssetOperationHandle,里面有Provider

ProviderBase,里面有对应的Asset

BundledProvider,里面有BundleLoaderBase

BundleLoaderBase,里面有AssetBundle,还有List

OperationHandleBase

一般逻辑

遍历所有资源表中的资源 加入到清单文件中

对于所有的依赖 也加入到清单文件中 如果依赖在资源表中和不在资源表中

遍历所有清单文件,生成资源的Bundle包名,如果资源在资源表中,那么根据资源表的配置生成包名;如果不在,那么根据通用规则,目前是从后往前4层作为包名。

遍历所有的清单文件,找到包名,把资源加入包中,打出资源包。