XLua是腾讯出的一款语言, 在GitHub上搜索Xlua第一个就是,里面有很多的腾讯XLua自带的案例说明等,可以先看说明和示例
下载下来XLua先配置XLua的环境
至此 XLUA的环境配置完成
XLua和C#的连接步骤
XLua的热更新步骤
脚本中需要注意的几个地方
1.是引用空间类型
2.是在要修改的脚本前面添加引用
3.是在要修改的方法前面写上[luaCallCsharp]
4.是在类前面写上[Hotfix]
下面是脚本示例,
加入要修改GameController脚本中的OnBigCountDownBtnClick这个方法
热更新不需要改C#脚本在桌面建立新的文档命名为"******.lua.txt"
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua; //这里需要引用到XLua 和 System.IO
using System.IO;
/// <summary>
/// XLua的热更新测试
/// </summary>
public class FishHotFixTest : MonoBehaviour
{
//需要一个Lua的虚拟机
//xlua转Csharp中静态方法用'.' 成员方法用 ':' 成员属性用 ' . '
private LuaEnv luaEnv;
// Use this for initialization
void Start () {
luaEnv = new LuaEnv();
luaEnv.AddLoader(MyLoader);
luaEnv.DoString("require 'fishHotFixTest'");
}
private byte[] MyLoader(ref string filePath )
{
string path = @"C:\Users\Administrator\Desktop\fishHotFix\"+filePath+".lua.txt";
return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path));
}
private void OnDisable()
{
luaEnv.Dispose();
}
// Update is called once per frame
void Update () {
}
}
下面是文档中要热更新的内容
print("fish")
print("hennysky")
--成员变量用: 静态方法用. 成员属性用.
UnityEngine = CS.UnityEngine
xlua.hotfix(CS.GameController,'OnBigCountDownBtnClick',function(self)
-- body更新逻辑
--使PlayerGold变成10000
self.playerGold = self.playerGold+10000
UnityEngine.Object.Instantiate(self.goldEffect)
self.bigCountDownBtn.gameObject:SetActive(true)
self.bigTimer = 3
end)
sublime3压缩包解压即可
链接:https://pan.baidu.com/s/1mfrH1XYXxztP7Z4roShv7A
提取码:auwd