Unity GameFramework提供一套完整的asset bundle编辑、构建、分析工具,以及资源加载、使用、销毁等处理。
工具主要分为
AssetBundleEditor:ab包编辑
AssetBundleBuilder:ab包构建
AssetBundleAnalyzer:ab分析,包括资源缺失、循环引用检测
AssetBundleCollection:
抽象出项目各种资源进行ab包处理时所需的信息,资源的名称、Guid、所属AssetBundle等,分为Asset.cs(资源类)和AssetBundle.cs(ab包类)
实现:
AssetBundleCollection主要提供了两个方法,Save、Load
Load解析AssetBundleCollection.xml,封装成AssetBundle.cs和Asset.cs两个数据类
Save保存AssetBundleEditor编辑后的资源配置信息,保存到AssetBundleCollection.xml
以及各种添加、删除、修改Asset、AssetBundle方法供后续编辑、构建、分析使用
其中:
1、AssetBundle类
Packed为True的AssetBundle在打包时会生成对应资源文件夹,热更项目中,需要将里面的文件放入streamingAssetsPath,用于首次进入游戏时,进行热更流程前所用到的资源,比如下载资源界面的背景、按钮、下载进度条等
LoadType:从内存加载,可以自定义加密方式,框架采用的是异或加密方式,分为加密和快速加密,快速加密只对前220个字节进行加密解密
Variant:标记多语言资源
ResourceGroups:更新资源时,可以按资源组依次更新
2、AssetBundleCollectionConfigPathAttribute
AssetBundleCollectionConfigPathAttribute,使用c#的Attribute,配置的是AssetBundleCollection.xml的文件位置,找到Attribute为AssetBundleCollectionConfigPath的变量,获取这个变量的值