AssetBundle

AssetBundle

  1. File Guid确保了资产在整个Unity工程中唯一,Local确保了Object在资产中唯一.InstanceID能够让Unity快速找到资产中的Object.

  2. AssetBundle(资产文件)AssetBundle文件结构浅析 - Pink-Floyd - 博客园 (cnblogs.com),包含两部分:包头和数据段

    • 包头:包含有关AssetBundle的信息,比如标识符、压缩类型、内容清单(?? 与manifest的区别).内容清单是一个以ObjectsName为键的查找表,表中的每个数据都提供一个字节索引用来查找对应的Object(并非Asset)数据段中的位置(平衡搜索树红黑树算法查找).

    • 数据段包含通过序列化AssetBundle中的Assets而生成的原始数据

  3. AssetBundle的压缩方式:

    • LZMA格式: 压缩的AssetBundle体积最小(高压缩比),会对所有序列化Assets后的完整字节数组进行压缩,但是相对的会增加解压的时间.

    • LZ4格式:压缩的AssetBundle体积较大,会单独压缩单独的Assets的字节.

    • 不压缩:体积最大,但访问的速度最快,数据段将保持为原始字节流.

  4. 加载AssetBundle的四个API

    1. AssetBundle.LoadFromMemory(Async optional)

    2. AssetBundle.LoadFromFile(Async optional)

    3. UnityWebRequest's DownloadHandlerAssetBundle

    4. WWW.LoadFromCacheOrDownload (on Unity 5.6 or older)

    5. Unity手游实战:从0开始SLG——资源管理系统-基础篇(三)AssetBundle原理 - 知乎 (zhihu.com)