介绍了Unity热更新的整个流程,其中用到了部分lua知识,有兴趣的可以自行了解
文章目录
一、AssetBundle
1、AssetBundle的作用
将一些资源(声音,图片,预设体等)分类打包,在游戏开始前统一加载。每次从服务器上下载,与本地资源的CRC值进行比较,更新本地资源来确保热更新。
2、AssetBundle的依赖
将一个预设体打包的时候,如果当前预设里含有其他AssetBundle的声音文件、动画文件或其他的文件时,该预设体AssetBundle包中会标注所依赖的包文件,在加载的时候要先加载被依赖的包,含有脚本文件时要确保项目中是否存在相应的脚本。
3、AssetBundle的建立
- 在项目根目录创建AssetBundles文件夹用来存放所有AssetBundle文件
- 编写生成AssetBundle文件的代码,放到Assets/Editor下
using UnityEditor;
using System.IO;
public class CreateAssetBundles
{
/// <summary>
/// 创建所有设置的AssetBundle文件
/// </summary>
[MenuItem("Assets/Build AssetBundles")] //设置到编辑器模式的Assets下Build AssetBundles选项方便调用
static void BuildAllAssetBundles()
{
string dir = "AssetBundles"; //设置AssetBundle根目录路径
//不存在就去创建
if (Directory.Exists(dir) == false)
{
Directory.CreateDirectory(dir);
}
BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindows64); //生成所有设置的AssetBundle
}
}
- 从Project视图下选中需要打到一个AssetBundle包的资源,设置其AssetBundle名称(名称中带有/表示路径,不区分大小写)和后缀,点击Assets下Build AssetBundles选项生成AssetBundle(不会删除之前存在的文件),完成AssetBundle的建立
-
点击资源
-
找到Inspector面板最下方的Blue双击打开设置AssetBundle
-
打开的AssetBundle属性
-
设置AssetBundle
4、AssetBundle的加载
1)manifest文件
//通过AssetBundles包获取manifest文件
string manifestFilePath = "AssetBundles/AssetBundles";
AssetBundle assetBundle = AssetBundle.LoadFromFile