欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群
Xlua源码地址:https://github.com/Tencent/xLua
Xlua热更其实是补丁式的热更,跟其他的方式不一样的是初始版本都是用的c#开发,只要在后期需要更新的地方打上补丁标签,而补丁逻辑就用lua替换掉原有的逻辑。xlua降低了初始版本的开发成本。此框架只有更新逻辑,下载更新功能需要另外处理
一:下载XluaXlua源码分为完整版跟开发版两种,完整版里面包含很多演示案例工具等,我们用于开发的直接下载开发版即可
1.创建新的unity项目,创建好资源管理文件夹
2.将XLua中的Plugins和XLua文件夹拷贝到项目中
三.C#调用Luaa.调用内部lua代码
1.引入XLua命名空间,在XLua中运行Lua代码的虚拟机就是LuaEnv
2.一个LuaEnv实例就是一个Lua虚拟机,建议全局唯一
LuaEnv luaEnv = new LuaEnv();
luaEnv.DoString("print('My Name Is HSJ')");
b.调用外部Lua文件
1.在Resources文件夹下创建一个Lua文件,文件的后缀需要是txt,格式:fileName.lua.txt
2.在c#的代码中通过lua虚拟机调用DoString()方法加载执行该lua文件;luaEnv.DoString("require 'fileName'");
不需要写lua文件的准确路径,只要把lua文件放到resources路径下即可。(此处存疑)
luaEnv.DoString("require 'Hsj'");
c.c#获取Lua代码中的数据
lua代码:
a = 100
b = '幻世界'
c = true
function MyName()
print('My Name Is Hsj')
end
c#代码
LuaEnv luaEnv = new LuaEnv();
luaEnv.DoString("print('My Name Is HSJ')");
luaEnv.DoString("require 'Hsj'");
int a = luaEnv.Global.Get("a");
string b = luaEnv.Global.Get("b");
bool c = luaEnv.Global.Get("c");
LuaFunction MyName = luaEnv.Global.Get("MyName");
Debug.Log(a);
Debug.Log(b);
Debug.Log(c);
MyName.Call();
1.Lua调用c#需要在c#的命名空间之前加前缀:“CS.”
2.CS.UnityEngine.GameObject 获取c#中的类
CS.UnityEngine.Debug.Log 获取c#中的方法
CS.UnityEngine.GameObject.Find 获取c#中的方法
3.演示
lua代码:
local GameObject = CS.UnityEngine.GameObject
local Debug = CS.UnityEngine.Debug
local go = GameObject('Hsj_LUa')
Debug.Log(go.name)
local myCamera = GameObject.Find('Main Camera')
Debug.Log(myCamera.name)
原工程地址:https://download.csdn.net/download/qq_37310110/11812518
本人是根据擅码网的monkey老师的教学视频学习的:http://www.mkcode.net/
欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群