Unity制作游戏AB包

需要注意的是在游戏场景运行的情况下,不能编译AB包,不运行的情况下编译AB包需要使用Unity的扩展菜单功能,首先需要建立菜单用来编译AB包。

1、建立AB包的名字,首先选中需要创建包的素材文件,然后在Inspector面板的最下方有一个两条横线,

Unity加载AB包-LMLPHP

把鼠标悬浮到横线上,鼠标向上拖动最下方就会出现AssetBundle的选项,

Unity加载AB包-LMLPHP

选择中间的选项,点击New创建AB包的名字即可

Unity加载AB包-LMLPHP

建立菜单:此脚本需要继承Editor类,并且引用Editor命名空间,凡是继承Editor类的脚本必须放到项目Editor文件夹下。

1、  创建菜单使用编辑器扩展功能,只需要在静态方法前加上[MenuItem(菜单目录)]就可以在菜单列表创建一个自定义名字的菜单。

    [MenuItem("打包/AB")]
static void ABTest()
{
Debug.Log("开始AB包");
BuildPipeline.BuildAssetBundles("Assets/Prefabs",
BuildAssetBundleOptions.None,
BuildTarget.StandaloneWindows64);
}

编辑菜单

AB包创建完成之后,只需要在创建出来的文件中找到跟你设置的AB包名字一样的文件,上传到Web服务器,并且能够根据链接下载就行。

2、接下来只需要使用Unity的WWW网络类下载就可以了,下载之后就可以使用了。

     void Start()
{ StartCoroutine(GetCube()); }
IEnumerator GetCube()
{
WWW w = new WWW("http://192.168.0.105/cube");
yield return w;
if (w.isDone)
{
AssetBundle ab = w.assetBundle;
GameObject ga = ab.LoadAsset<GameObject>("Assets/Prefabs/Cube.prefab");
ga = Instantiate(ga);
}
}

加载AB包

05-11 14:49