XLua实现热更新

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

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

这里需要导入一个XLua插件

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

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

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

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

 

 然后在update里判断调用

你还需要写一个类来调用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项更新

 这样就可以完成热更新了

猜你喜欢

转载自blog.csdn.net/Optimistic_lx/article/details/129888575