文章目录
前言
Unity版本:Version 2018.4.2f1
这里首先需要我们掌握了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 就行,用来显示热更新进度。
例如:

然后创建 GameScript.cs 和 DownLoad.cs 脚本,并且挂载到场景空物体上,分别拖拽Slider 和 Text 到DownLoad脚本的公共属性,把 StartDownLoad方法绑定到Button组件的点击事件:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yBikQ5gb-1584196102306)(/markdown/images/5e6c8e5cedbc2a24dfa43a47)]](/https://i-blog.csdnimg.cn/blog_migrate/fec5d89820df520e97854c6c0e18b50d.png)
GameScript.cs :
using UnityEngine;
using UnityEngine.EventSystems;
using XLua;
//-----------------------------【游戏脚本】-----------------------------
[Hotfix]
public class GameScript : MonoBehaviour
{
public int num1 = 100;
private

本文详细介绍如何使用XLua在Unity中实现热更新,包括环境配置、AssetBundle资源打包、lua脚本编写及执行流程。通过一个Demo展示从创建场景资源到最终运行测试的全过程。
&spm=1001.2101.3001.5002&articleId=104870024&d=1&t=3&u=7c6972bdcd774cb3bb25567a666e9f03)
414

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



