这一篇讲 Unity 项目里几乎绕不开的一个基础设施:AssetBundle(下文简称 AB)。很多看似零散的问题,背后都是同一套机制:为什么一张贴图明明只有一份,内存里却出现了两份?为什么材质加载出来是粉红色,或者引用变成了Missing?为什么 LZMA 包更小,加载却更慢、更占内存?为什么Unload(false)之后再加载,同一个资源会被复制一份?为什么包拆得太碎,内存反而上涨?为什么升级 Unity 版本后,旧的 AB 读不出来或者报 TypeTree 相关的错误?这次用物流集装箱做比喻:AB 文件:一个集装箱文件头与目录:贴在集装箱门上的装箱单压缩块(Block):集装箱里打包好的一个个包裹SerializedFile:箱子里的一份"货物清单 + 货物"PathID:每件货物在清单里的编号Externals:清单上写的"本货物的配件在另一个集装箱里"PersistentManager / InstanceID:仓库的总账本,记录每件已入库货物的库位号