一、AB包是什么
AB包全名AssetBundle(资源包)。是一种Unity提供的用于存放资源的包。通过将资源分布在不同的AB包中可以最大程度地减少运行时的内存压力,并且可以有选择地加载内容。
二、为什么要用AB包
主要原因,就是用作资源热更新,以及对应用包体的减负
三、有没有现成的打AB包的插件
有官方出过一个插件《AssetBundle Browser》,该插件在Github上,下载导入就可以使用,我这边就不做过多的介绍了。
四、能不能自己编写打AB包功能
能,但是这需要一定的编辑器扩展知识,下面会放上简单的代码,实现打AB包,以及加载AB包。
首先自己编写编辑器扩展,我们需要一个文件夹和一个命名空间以及一个预编译,分别是:
文件夹:Editor,在Assets文件夹下创建一个文件夹,叫这个名称,这个名称在Unity中是特殊的,放在里面的脚本都是用来编写编辑器扩展的代码,最后发布也不会把该文件中的代码发布出去。
命名空间:UnityEditor,在Unity中编辑器是一套代码,应用开发功能是一套代码,分别编辑器的是UnityEditor,应用功能是UnityEngine,发布应用只会把UnityEngine的代码发布到应用中,如果在需要发布的代码中应用UnityEditor发布时会报异常,导致发布失败。
预编译:UNITY_EDITOR,当我们要编写编辑器扩展,如果必须在需要发布的代码中编写时,那么可以在编辑器扩展的这部分代码加上UNITY_EDITOR预编译头,那么发布应用时会自动裁剪掉,就不会影响发布导致发布失败。
说了这么多,就直接开始上代码吧,首先创建一个编辑器扩展的按钮,就前面说的在Assets文件夹下创建一个Editor文件夹,创建一个脚本AssetBundleBrowser
接着就是创建一个按钮(如下图),我们在脚本中编写一个静态方法,然后增加上MenuItem字段即可,字段参数是这个按钮的名称,如果加上/可以增加多级菜单
代码如下:
接着就是调用Unity中提供的打包AB的方法(如下),
BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows)</