前言
Unity版本:Version 2018.4.2
这里首先需要我们掌握了XLua的基本知识,具体教程文档可以去GitHub - XLua看看。
大概思路:标记需要热更的资源,打包构建AssetBundle资源(包括lua脚本),上传到服务器,客户端通过服务器下载读取AssetBundle资源,执行lua脚本即可。
这里的测试 Demo 运行时 点击鼠标左键原本应该是创建的Cube,通过热更新 成功后,应该是创建一个 红色的Sphere。
实践
一. Xlua及其HotFix的环境配置
- 到 GitHub - XLua 下载最新版本的xlua工程,解压并复制该文件中的 Tools文件夹 到 工程根目录 下 , Assets 下的 Plugins、XLua文件夹 到 工程对应的Assets 下
- 打开HotFix的宏。在Unity菜单栏找到File -> Build Setting -> Player Setting ->Scriptsing Define Symbols ,在里面输入宏 HOTFIX_ENABLE,按ENTER后,Unity后台会编译一下。编译过后会在编译器XLua下面多一个“Hotfix Inject in Editor”(XLua -> Hotfix Inject in Editor)。
二. 创建一个打包AssetBundle资源的脚本并放在Editor文件夹下
BuildAssetBundles.cs 脚本如下:
using System.Net;
using UnityEditor;
using System.IO;
using System;
//-----------------------------【构建AssetBundles资源包】-----------------------------
public class BuildAssetBundles
{
// 菜单选项目录
[MenuItem("Assets/Build AssetBundles")]
static public void BuildAllAssetBundles()
{
// 创建文件目录
string dir = "AssetBundles";
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
// 构建
// 参数1:路径
// 参数2:压缩算法,none 默认
// 参数3:设备参数,ios,Android,windows等等
BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
UnityEngine.Debug.Log("AssetBundle资源打包完成!");
}
}
此时可以在 编辑器菜单栏中看到 Asset -> Build AssetBundles 按钮。
三. 创建Demo场景及其资源脚本
首先创建一个基本的UI界面,有一个Button、Slider 和 Text 就行,用来显示热更新进度。
例如: