Unity 热更新学习笔记四:xLua插件 Part1-基础调用

发布时间 2023-05-22 16:26:47作者: CatSevenMillion

各平台如何热更新?

  Android,PC(C#)

    将执行代码预编译为AssemblyDLL

    将代码作为TextAsset打包进AssetBundle

    运行时调用AssemblyDLL代码

    更新相应的AssetBundle即可实现热更新

  IOS(不允许使用C#的部分反射功能并不支持JIT)

    Unity+Lua插件(常见的有uLua,xLua,ILRuntime)

什么是是xLua?

  这是一款腾讯开发的Lua插件下载网址:GitHub - Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc.

下面是一段简单的C#调用Lua代码

//XLua解析器获得
LuaEnv env = new LuaEnv();
//解析器运行Lua代码,把字符串当成Lua代码执行
env.DoString("print('Hello world!')");
//解析器释放
env.Dispose();

如何使用Lua调用C#代码呢?代码如下

LuaEnv env = new LuaEnv();
//Lua调用 C#代码 (CS.命名空间.类名.方法名(参数))
env.DoString("CS.UnityEngine.Debug.Log('From Lua')");
env.Dispose();

这样两方都可以互相调用对方了

Lua返回值给C#(获取解析器与释放都是一样的不再赘述)

object[] data = env.DoString("return 100,true");
Debug.Log("Lua的第一个返回值:"+data[0].ToString());
Debug.Log("Lua的第二个返回值:"+data[1].ToString());

调用Lua文件执行

// 内置加载器扫描预制目录,查找是否存在test.lua
env.DoString("require('test')");