找回密码
 立即注册
查看: 347|回复: 0

XLua热更新框架学习(一)

[复制链接]
发表于 2021-8-13 14:40 | 显示全部楼层 |阅读模式
欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群



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

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

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



二.导入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'");


c.c#获取Lua代码中的数据
lua代码:
a = 100b = '幻世界'c = truefunction MyName()    print('My Name Is Hsj')endc#代码
    LuaEnv luaEnv = new LuaEnv();        luaEnv.DoString("print('My Name Is HSJ')");        luaEnv.DoString("require 'Hsj'");        int a = luaEnv.Global.Get<int>("a");        string b = luaEnv.Global.Get<string>("b");        bool c = luaEnv.Global.Get<bool>("c");        LuaFunction MyName = luaEnv.Global.Get<LuaFunction>("MyName");        Debug.Log(a);        Debug.Log(b);        Debug.Log(c);        MyName.Call();


四: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.GameObjectlocal Debug = CS.UnityEngine.Debuglocal 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扫描二维码加群

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 09:05 , Processed in 0.088554 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表