Unity3D开发之----将预设体Prefab压缩成AssetBundle文件

我在写这边文章之前参照了如下文章:
https://www.jianshu.com/p/5d4145cd900c

----------------------------我是分割线--------------------------

Asset Bundle的作用:
1.AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;
2.AssetBundle自身保存着互相的依赖关系;
3.压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输;
4.把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小;

什么是AssetBundle
可以归为两点:
1,它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文件。这些文件可以分为两类:serialized file 和 resource files。(序列化文件和源文件)
serialized file:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个)
resource files:某些二进制资源(图片、声音)被单独保存,方便快速加载
2,它是一个AssetBundle对象,我们可以通过代码从一个特定的压缩包加载出来的对象。这个对象包含了所有我们当初添加到这个压缩包里面的内容,我们可以通过这个对象加载出来使用。

如何操作?
1.首先,先将游戏物体设置成Prefab预设体(在U3D中创建游戏物体,然后在Assets文件夹下创建一个Prefab文件夹,并将物体拖拽到该文件夹中,就形成了预设体)
然后对该预设体进行编辑:
在这里插入图片描述
这里的含义是:生成的AssetBundle文件会生成在scene文件夹下的model.ab文件中,用户可以自定义。
2.在Assets目录下创建一个Editor文件夹,并在Editor文件夹下创建编辑扩展脚本(一定要在Editor文件夹下创建编辑扩展脚本,否则不会生效!!!
在这里插入图片描述
这里名字随便命名,注意规范!
3.该脚本代码如下:

using UnityEditor;
using System;
using System.IO;

public class CreateAssetbundles 
{
	//可以让U3D的菜单栏生成指定名称的菜单项,点击后,用来调用该方法
    [MenuItem("AssetsBundle/Build AssetBundles")]
    static void BuildAllAssetBundles()//进行打包
    {
        string dir = "AssetBundles";
        //判断该目录是否存在
        if (Directory.Exists(dir) == false)
        {
            Directory.CreateDirectory(dir);//在工程下创建AssetBundles目录
        }
        //参数一为打包到哪个路径,参数二压缩选项  参数三 平台的目标
        /*
         BuildAssetBundleOptions.None:使用LZMA算法压缩,压缩的包更小,但是加载时间更长。使用之前需要整体解压。
            一旦被解压,这个包会使用LZ4重新压缩。使用资源的时候不需要整体解压。
            在下载的时候可以使用LZMA算法,一旦它被下载了之后,它会使用LZ4算法保存到本地上。
        BuildAssetBundleOptions.UncompressedAssetBundle:不压缩,包大,加载快
        BuildAssetBundleOptions.ChunkBasedCompression:使用LZ4压缩,压缩率没有LZMA高,但是我们可以加载指定资源而不用解压全部。
        注意使用LZ4压缩,可以获得可以跟不压缩想媲美的加载速度,而且比不压缩文件要小。
         */
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
        
        
    }
}

编写好代码之后,U3D的菜单栏会生成一个菜单项:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值