欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

Unity热更系列--C#访问XLua的公共变量,方法等

发布时间:2024/1/1 C# 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Unity热更系列--C#访问XLua的公共变量,方法等 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

如果你想让你在编写Lua的时候给你增加对Unity的代码提示的话  请看:https://blog.csdn.net/FransicZhang/article/details/89483861

 

首先,你得在项目中加入XLua的环境

脚本中添加对Xlua的引用

using XLua;

然后创建一个XLua的虚拟机(解析器) 最好项目全局只有一个

LuaEnv luaenv = new LuaEnv();

1、我们先写一个简单的XLua测试看看能不能跑起来

LuaEnv luaenv = new LuaEnv();luaenv.DoString("print('I am XLua')");

可以看出来 XLua的环境没有问题。

2、我们创建一个HelloXLua.lua的文件   来使用C#访问这个Lua文件   看能不能访问出里面的全局变量

--Lua脚本 a = 10 str = "Zhang" IsDie = true

然后在C#中写:

LuaEnv luaenv = new LuaEnv(); luaenv.DoString("require 'HelloXLua'");//固定写法 传入Lua文件名 int a = luaenv.Global.Get<int>("a");//获取Lua的全局变量 string str = luaenv.Global.Get<string>("str");//获取Lua的全局变量 bool IsDie = luaenv.Global.Get<bool>("IsDie");//获取Lua的全局变量 print(a); print(str); print(IsDie);


可以看到我们已经成功的访问到了Lua中的全局变量

3、我们来看怎么运行Lua中的方法

(带参没有返回值)

--Lua脚本 function add(a, b)print(a + b)print("我被调用了") end //C#脚本 LuaEnv luaenv = new LuaEnv(); Add add = luaenv.Global.Get<Add>("add"); add(20, 60);//返回值方法 多个返回值 add = null;//在外面定义一个委托 [CSharpCallLua]//标签 固定写法 delegate int Add(int a, int b);

可以看出来带参数的方法也成功的调用

 

(带参有返回值)

--Lua脚本 function add(a, b)print(a + b)print("我被调用了")-- bodyreturn a + b, a, b end

参数使用  ref或者out

//C#脚本 Add add = luaenv.Global.Get<Add>("add"); int resa, resb; int adsd = add(20, 60, out resa, out resb);//返回值方法 多个返回值 print(resa); print(resb); print("adsd--" + adsd);//定义委托 [CSharpCallLua] delegate int Add(int a, int b, out int resa, out int resb);

 

总结

以上是生活随笔为你收集整理的Unity热更系列--C#访问XLua的公共变量,方法等的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。