Unity 简易AssetBundle打包方法(一)

一.打包AB

本文全程以Unity中基础3d Object 以及部分材质作为AssetBundle(AB)导出素材

创建一个Editor文件夹(一定要放在这个文件夹里面),并在其中创建一个C#脚本MyAssetBundles,代码如下

using System.IO;
using UnityEditor;

public class MyAssetBundles  {
    [MenuItem("Assets/BuildBundles")]//在Assets选项中添加点击按钮
    static void BuildBundles()
    {
        string assetBundlesLibrary = "AssetBundles";
        if (!Directory.Exists(assetBundlesLibrary))//判断本地目录是否已经存在目录名
        {
            Directory.CreateDirectory(assetBundlesLibrary);
        }

        BuildPipeline.BuildAssetBundles(assetBundlesLibrary, BuildAssetBundleOptions.None,
            BuildTarget.StandaloneWindows64);//在此目录下创建AssetBundle
    }
}

其次要对需要打包的预制体添加生成的名字,后面的选项可以修改后缀名为unity3d
在这里插入图片描述
我们找到Assets->BuildBundles运行即可对这个Cube进行打包
在这里插入图片描述
找到你项目的根目录里面就会有一个AssetBundles文件夹,里面就是打包的内容

scene文件夹下:

二.加载AB包

首先创建一个脚本 LoadFileFromAB ,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LoadFileFromAB : MonoBehaviour {

	// Use this for initialization
	void Start ()
	{
	    AssetBundle ab=AssetBundle.LoadFromFile("AssetBundles/scene/cube.unity3d");//加载本地AB包内容
	    GameObject cube=ab.LoadAsset("Cube") as GameObject;//LoadAsset中参数为导出前Prefab名字
	    Instantiate(cube);//生成cube
	}
	
}

然后将脚本挂载在Camera上 运行即可 发现已经创建了一个Cube(Clone)

此时,我们将整个Cube(Clone)拖拽至Project面板中,做成Prefab预制体,然后结束运行会发现,Cube材质已经丢失,这是因为运行的时候是在内存中加载AB包中cube所带有的材质,一旦结束运行,自动回收了。

三.打包策略

对于一些需要公共材质的预制体,推荐将材质球和贴图合并为同一AB名字打包,再将不同预制体进行打包

例子:我们先创建两个不同的物体,并为其附上材质球,修改颜色为红色

然后我们开始给他们打包,修改Assetbundle名


运行Assets->BuildBundles后我们找到目录下打包的文件

我们这里看到capsule和cube分别打包了占40kb

接下来我们换一种打包方式
我们对他们两个共有的材质球也进行AB包命名

然后再运行BuildBundles(先删除之前我们打包完的文件)观察文件目录

现在只有我们打包的材质球占了39kb,其余的capsule和cube,由于他们是公用一个材质球,Unity自动帮我们内部打包时进行了打包依赖,所以我们省下了近一半的容量


那么我们如何导入呢?

我们应该在使用资源之前,先加载依赖的材质包

参考资料:https://blog.csdn.net/lmyfx/article/details/78236225
未完待续…

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值