XLua热更新学习笔记(附 SubLime text --有Lua的关键字提示)

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

猜你喜欢

转载自blog.csdn.net/hennysky/article/details/84978916