在游戏开发的过程中,经常会有更新,而小版本更新的时候不需要重新下载,这样才能更好的保障玩家的体验,这里就用到了我们热更新技术了
这里只记录学习,完成了简单的功能更新
这里需要导入一个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项更新
这样就可以完成热更新了