之前说过,想研究一下资源的热更新问题。先撇开脚本的热更新,单纯从资源来说,AssetBundle是Unity3D自带的资源打包方式,用处还是蛮多的。比如一些需要编辑后使用的角色资源,或者一些需要在内部压缩的资源。所以考虑了一下,稍微就做了这么一个小插件:
选择需要打包的文件或者目录,选择Build之后,出现界面:
里面可以选择发布的平台、是否导出所有关联的资源、导出后文件的扩展名、还是导出的路径都可以设置。
至于能导出的平台类型,是可以手动添加的。
之前有对阿赵感兴趣的人问我,你有没有做过导出AssetBundle的工具。其实导出AssetBundle是非常简单的事情,因为API里面有完全现成的代码,只需要直接建个类,然后把代码复制进去就可以了。
其中BuildAssetBundle方法有多种重载,可以选择是否设定资源包编译选项(BuildAssetBundleOptions)和目标发布平台(BuildTarget)。最简单的重载方法是只传进需要打包的主资源、所有打包的子资源和路径就可以打包成功了。其实如果你不填BuildAssetBundleOptions和BuildTarget,看看Unity的源码就知道,他是帮你做了默认值了,BuildAssetBundleOptions的默认值是BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets,意思是收集所有依赖的资源和强制打包整个资源。而BuildTarget的默认值是WebPlayer,也就是说假如你什么都不填,导出的是针对于WebPlayer平台的资源包。
Unity3D的AssetBundle有一个比较麻烦的地方,就是导出是需要指定平台,因为针对平台的不一样,导出时的资源压缩比例和一些设置会不一样,所以如果导出了webPlayer平台的,那你就只能在pc或者web上面加载,而在手机上面就不能加载了。
正是因为有这么一个麻烦的地方,所以我才会想做个可以操作的界面插件来进行导出,那样以后操作可能会方便一点。
评论