作用:可以跨越ios、Android 用于传输新数据的包
资源(Prefet、Object)被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个)
某些二进制资源(图片、声音)被单独保存,方便快速加载
!!一个Materials材质多个物体使用,把材质打一次包,可以减少容量!!
逻辑实体:(所有UI一个包、一个/所有角色一个包、场景模型贴图一个包)
类型:(声音一个包、sharder一个包、模型一个包、材质一个包)
使用分组:(关卡一个包)
Materials材质在预览图下方有AssetBundle属性
2个命名空格(例如:大空格.小空格)
大空格(可以直接写,也可以加个斜杠代表文件夹里的):
wall
scene/wall
小空格(版本)
v1、v2、v3、v4、v5
Assets文件夹创建Editor文件夹 - CreateAssetBundles.cs
using UnityEditor;
using System.IO;
public class CreateAssetBundles
{
[MenuItem("Assets/Build AssestBundles")]//菜单栏选项调用
static void BuildALLAssetBundles()
{
string dir = "AssetBundles";//路径
if (Directory.Exists(dir) == false)//检测路径是否存在
{
Directory.CreateDirectory(dir);
}
BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.Android);//平台区分的
}
}
压缩方式:
BuildAssetBundleOptions.None
LZMA:压缩率高,加载时间长
BuildAssetBundleOptions.UncompressedAssetBundle
不压缩、包大、加载快
BuildAssetBundleOptions.ChunkBasedCompression
LZ4:指定资源解压
菜单栏Assets - Build AssestBundles
Assets文件夹 - 右键 - Show in Explorer - AssetBundles文件夹
.manifest文件可以打开查看资源目录、一一对应
AssetBundles
AssetBundles.manifest
.manifest:
CRC:校验是否完整
Assets:资源路径
Dependencies:依赖本资源的资源
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadFromFileExample : MonoBehaviour
{
void start()
{
AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/scene/wall");
GameObject wallPrefab = ab.LoadAsset<GameObject>("");
Instantiate(wallPrefab);
//object[] objs = ab.LoadAllAssets();
//foreach (object o in objs)
//{
// Instantiate(o);
//}
}
}
一个是加载一个
一个是循环加载全部