XLua---热更新

一.XLua环境配置

1.将XLua中  PluginXLua 复制到热更新的工程中,注意要放在 Assets 子目录

   

2.开启宏 HOTFIX_ENABLE

File--->bulidSetting--->playerSetting--->scriptsDefineSymbols

3 .Tools  工具文件夹  复制到Assets同级目录

  

4. 拷贝 unity 安装目录 ,找到下方文件(.dll)

   (目录取决于自己安装unity的位置)

     将上方文件(.dll)放入下方unity项目文件夹下

            (目录取决于自己unity项目的位置)

             

二.Lua和C#的链接 步骤

1.清除C#和Lua链接文件

2.生成链接的中间文件

3.注入

三.XLua热更新流程

1.从项目启动,用C#开发

2.将来哪一块需要更新    [Hotfix]     C#   方法(ShowPet)

     ①.引入命名空间 using XLua;

     ②.在需要更新的类上方加入标签  [Hotfix] 

     ③.在需要更新的方法上方加入  [LuaCallCSharp]     (下面提供了一个类和类里面的两个方法)

   类:

         

   方法:

         

注意:单例模式Lua不能识别,要转换为下方方法

 ④.生成Lua和C#链接的中间脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
using System.IO;
public class FishHotFixTest : MonoBehaviour {

    private LuaEnv luaEnv;
    void Start () {
        luaEnv = new LuaEnv();
        luaEnv.AddLoader(MyLoader);
        luaEnv.DoString(" require 'fishHotFix'"); //fishHotFix 要更新的逻辑,Lua文件
    }
    public byte[] MyLoader(ref string filepath)
    {
        //文件地址(根据自己文件夹位置写,这里我放在了桌面的fishHotfix文件夹中)
        string path = @"C:UsersAdministratorDesktopfishHotfix" + filepath + ".lua.txt"; 
        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path));         
    }
    private void OnDisable()
    {
        luaEnv.DoString(" require 'fishHotFixDispose'"); //fishHotFixDispose销毁虚拟机文件
        luaEnv.Dispose();
    }    
}

    ⑤.注入

   (注意:一旦更改C#脚本,需要重新进行下面操作)

  

3.写对应的Lua脚本进行热更新(ShowPet)

原文地址:https://www.cnblogs.com/lk95/p/10124022.html