XLua实现热更新

在游戏开发的过程中,经常会有更新,而小版本更新的时候不需要重新下载,这样才能更好的保障玩家的体验,这里就用到了我们热更新技术了

这里只记录学习,完成了简单的功能更新

这里需要导入一个XLua插件

使用热更新,这里需要修改设置

XLua实现热更新_第1张图片

在这里添加一个允许热更新操作的命令 如下:

XLua实现热更新_第2张图片

这次的案列是一个贪吃蛇的游戏,热更新添加一个点击鼠标左键再停右键反之的操作

这里声明了2个方法,用于热更新 ,当然你可以更新任何的方法,热更新会把你这个方法里面的内容更新为你热更新方法里面的内容

 XLua实现热更新_第3张图片

 然后在update里判断调用

XLua实现热更新_第4张图片

你还需要写一个类来调用Lua

using XLua;
using System.IO;

public class TestSnake : MonoBehaviour
{
    LuaEnv lua;
    // Start is called before the first frame update
    void Start()
    {
        lua = new LuaEnv();
        lua.AddLoader(Loads);
        lua.DoString("require('Snake')");
    }
    byte[] Loads(ref string fileName)
    {
        string path = Application.dataPath + "/Lua/" + fileName + ".lua";
        return File.ReadAllBytes(path);
    }
    // Update is called once per frame
    void OnDestory()
    {
        lua.Dispose();
    }
}

 接下来是Lua的热更新

engine=CS.UnityEngine

xlua.hotfix(CS.Player,'Stop',--你需要更新的方法名
function(self)
     engine.Time.timeScale=0
end
)
xlua.hotfix(CS.Player,'ReStart',
function(self)
     engine.Time.timeScale=1
end
)

 Xlua热更新更新后可以覆盖原方法的全部内容

写完后需要在Unity更新一下

先点第二项清除,在点第一项重新写,最后点第3项更新

XLua实现热更新_第5张图片

 这样就可以完成热更新了

你可能感兴趣的:(lua,开发语言,unity,游戏引擎)