分享

AssetBundleMaster

 tiancaiwrk 2018-07-11
    这是一个单独提取出来的打包/加载模块, 我们知道在Unity的开发环境下, Editor下的开发最方便的就是使用Resources加载的方式进行加载, 它不管在测试, 编辑, 资源控制方面都非常方便, 而我们通常在开发时更多的是在发布平台下不停地打包测试中, 在资源很多的情况下, 每次发包都要进行完整资源打包是很浪费时间的, 所以建议在任何开发情况下都选择使用AssetBundle的方式, 不管是程序包或者资源包都能很快地构建出来, 并且在资源包的情况由于有差量打包, 没有变更的资源不会被重新打, 所以很节省打包时间.
    我们从工作流来开始说明, AssetBundleMaster模块就是一个自动打包以及加载的模块, 它的工作流如下:
 
     在上图中, BuildRoot不是特定名称或路径的文件夹(当然我们使用的路径都在Assets之下), 而Artist Src Folder指代任意的文件夹或是任意多个文件夹, 只是在这个系统中, 习惯性地把美术资源的原始文件放在Artist Src Folder代表的文件夹中是一个好习惯, 这些文件夹都不在Resources文件夹下, 这样就能保证进行Build的时候不会打包资源文件了.
    在我提供的Demo中, BuildRoot文件夹被我设定为Assets/Plugins/AssetBundleMaster/Demo/ReleaseResources 文件夹了, 可以在Tools->AssetBundleMaster->Asset Bundle Builder 菜单打开界面查看, 界面如下:
 
 
    点击 [Change Build Root ...] 按钮就可以更换BuildRoot, 那么BuildRoot的意义是什么呢? BuildRoot就是代表了打包的起点, 或叫程序加载资源的起点. 以一个例子来说明, 比如 :
    文件结构:

    1. BuildRoot 设为文件夹Asset/AA/BB 其下有资源 Pic001, 加载就是Load("Pic001")
    2. BuildRoot 设为文件夹Asset/AA 其下有资源BB/Pic001, 加载就是Load("BB/Pic001")
    这样BuildRoot其实就跟Resources文件夹相似, 只是Resources文件夹可以有很多个, BuildRoot就只能有一个. 而能够支持这个的就是打包和加载系统.

    打包系统就是在BuildRoot文件夹下搜索所有资源文件, 这些就成为了主资源, 它们的相对于BuildRoot的相对路径就成为了AssetBundle的包名, 只有设定了Packing Tag的Sprite文件不一定使用相对路径, 可是读取仍然使用它的相对路径, 这个会在 附录_打包 中说明.



    附录_打包 :
    1. Sprite, 由于Sprite的特殊性, 当它设定了Packing Tag之后会生成图集, 如果它们被分在不同的AssetBundle中的话, 会造成图集在各个包中都存在一份拷贝, 会造成资源重复以及包变得巨大. 这里加载逻辑始终还是通过相对路径加载, 只不过在后台会有一个路径查找表, 会将相对路径指向Atlas的路径来完成目标文件的加载.
























    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多