这是在编辑器下实现的方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
public class CreateAB {
[MenuItem("Toosl/CreatAB")]
static void BuildAllAssetBundles()
{
string dir = "AssetBundles";
if (!Directory.Exists(dir)) //"没有文件夹,创建一个新的
{
Directory.CreateDirectory(dir);
}else
{
Directory.Delete(dir, true); //有文件夹,删除文件夹里面的内容,再创建一个新的文件夹
Directory.CreateDirectory(dir);
}
//参数1: 文件输出地址 参数2:打包方式 参选3:打包平台,输出平台自己选择,安卓选安卓,苹果选苹果
BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
}
}
/*
* 注意 关于打包资源的脚本,在移动平台下Assetbundle里面放的脚本是不会被执行的,
* 如果你打包时,在物体上挂脚本了,加载资源时,会自动在本地找脚有,如果有就会挂上,没则不挂
* 加载进游戏中Prefab会自动在本地找它身上挂着的脚本,他是根据脚本的名来寻找,挂前的参选数照旧,如果本地有这条脚本的话。
*
* Unity3D引擎为我们提供了三种压缩策略来处理AssetBundle的压缩,即:
*
* LZMA格式 LZ4格式 不压缩
*
*
* LZMA格式: 在默认情况下,打包生成的AssetBundle都会被压缩。在U3D中,AssetBundle的标准压缩格式便是LZMA(LZMA是一种序列化流文件)
* ,因此在默认情况下,打出的AssetBundle包处于LZMA格式的压缩状态,在使用AssetBundle前需要先解压缩。
* 使用LZMA格式压缩的AssetBundle的包体积最小(高压缩比),但是相应的会增加解压缩时的时间。
*
* LZ4格式: 由于LZ4的压缩比一般,因此经过压缩后的AssetBundle包体的体积较大(该算法基于chunk)。
* 但是,使用LZ4格式的好处在于解压缩的时间相对要短。
*
* 若要使这种格式就在 打包资源的第二个参数上面填 BuildAssetBundleOptions.ChunkBasedCompression
*
* 不压缩:我们也可以不对AssetBundle进行压缩。没有经过压缩的包体积最大,但是访问速度最快。
* 若要使这种格式就在 打包资源的第二个参数上面填 BuildAssetBundleOptions.UncompressedAssetBundle
*
*
*
*
*
运行此代码会打包带有标签有资源,如图