学习目标:
学习AssetBundle学习内容:
AssetBundle学习
学习时间:
2021.7.22
学习产出:
1、 AssetBundle的定义和作用
用处?
1,AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;
2,AssetBundle自身保存着互相的依赖关系;
3,压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输;
4,把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小;
注意
首先我们在Unity的右下角定义的那里,定义的是资产包名,而不是资产名。
2.什么是AssetBundle
可以归为两点:
1,它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文件。这些文件可以分为两类:serialized file 和 resource files。(序列化文件和源文件)
serialized file:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个)
resource files:某些二进制资源(图片、声音)被单独保存,方便快速加载
2,它是一个AssetBundle对象,我们可以通过代码从一个特定的压缩包加载出来的对象。这个对象包含了所有我们当初添加到这个压缩包里面的内容,我们可以通过这个对象加载出来使用。
3.使用效果

图片展示了我们是将Asset打包成AssetBundle然后上传到服务器,然后在客户端再次登录的时候向服务器检查更新,如果需要更新的话,那么就下载新的资源包(AssetBundle)。一共有四种获取资源包的方法。
4.编辑器代码
using UnityEditor;
using System.IO;
[MenuItem("Assets/Build AssetBundles")]
public static void BulidAllAssetBundles()
{
string dir = "AssetBundles";
if (Directory.Exists(dir) == false)
{
Directory.CreateDirectory(dir);
}
BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
}
编辑器就是可以在游戏不运行状态下可以在编辑器页面进行执行的代码。值得一提的是Directory的调用,一个是Exists方法,判断是否存在这个文件夹,还有是CreateDirectory的方法。
5.打包配置

这里定义的是资产包名,而不是资产名。
前面的是前缀“capsule”后面的是后缀。也就是.unity3d。同时前缀可以自定义路径,比如scene/capsule。那么就会在根目录下面对应生成一个scene的文件夹,然后把capsule放在里面。
6.打包文件详解
首先,当我们在Unity的编辑器点击了Build AssetBundles,它会在根目录下面会生成

打开.manifest

里面有三个info,对应着三个我们打包出来的AssetBundle。那么我们就可以通过遍历它的manifest文件来获取我们想要找的AssetBundle。

7.读取AssetBundle
//加载物体
//1.获得AssetBundle
//这里的ab1是获取对应cube的身上material的share包。如果没有拿到share包,cube就会变红紫色(无material)状态。只需要在对应的Material使用前去获取share就行了。
AssetBundle ab1 = AssetBundle.LoadFromFile(

本文介绍了Unity的AssetBundle概念、作用及使用流程,包括AssetBundle的打包配置、读取方式、资源卸载和文件校验。重点讲述了从服务器加载AssetBundle的四种方法,以及AssetBundle的打包策略,强调了正确管理和卸载资源的重要性。

1920

被折叠的 条评论
为什么被折叠?



