Unity - AssetBundle和XLua热更新教程(简单详细)

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

前言

Unity版本:Version 2018.4.2f1

这里首先需要我们掌握了XLua的基本知识,具体教程文档可以去GitHub - XLua看看。

大概思路:标记需要热更的资源,打包构建AssetBundle资源(包括lua脚本),上传到服务器,客户端通过服务器下载读取AssetBundle资源,执行lua脚本即可。

这里的测试 Demo 运行时 点击鼠标左键原本应该是创建的Cube,通过热更新 成功后,应该是创建一个 红色的Sphere

实践

一. Xlua及其HotFix的环境配置

  1. GitHub - XLua 下载最新版本的xlua工程,解压并复制该文件中的 Tools文件夹工程根目录 下 , Assets 下的 Plugins、XLua文件夹工程对应的Assets
  2. 打开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)]

GameScript.cs :

using UnityEngine;
using UnityEngine.EventSystems;
using XLua;
//-----------------------------【游戏脚本】-----------------------------
[Hotfix]
public class GameScript : MonoBehaviour
{
   
   
    public int num1 = 100;
    private 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值