XLua热更新框架学习(一)

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

XLua热更新框架学习(一)_第1张图片


 

Xlua源码地址:https://github.com/Tencent/xLua

Xlua热更其实是补丁式的热更,跟其他的方式不一样的是初始版本都是用的c#开发,只要在后期需要更新的地方打上补丁标签,而补丁逻辑就用lua替换掉原有的逻辑。xlua降低了初始版本的开发成本。此框架只有更新逻辑,下载更新功能需要另外处理

一:下载Xlua

Xlua源码分为完整版跟开发版两种,完整版里面包含很多演示案例工具等,我们用于开发的直接下载开发版即可

XLua热更新框架学习(一)_第2张图片XLua热更新框架学习(一)_第3张图片

二.导入Xlua

1.创建新的unity项目,创建好资源管理文件夹

2.将XLua中的Plugins和XLua文件夹拷贝到项目中

三.C#调用Lua

a.调用内部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'");

XLua热更新框架学习(一)_第4张图片

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();

 

XLua热更新框架学习(一)_第5张图片

四:lua调用c#

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)

XLua热更新框架学习(一)_第6张图片

原工程地址:https://download.csdn.net/download/qq_37310110/11812518

本人是根据擅码网的monkey老师的教学视频学习的:http://www.mkcode.net/


欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

XLua热更新框架学习(一)_第7张图片

 

你可能感兴趣的:(框架搭建,Lua)