Unity热更系列--C#访问XLua的公共变量,方法等
生活随笔
收集整理的这篇文章主要介绍了
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的公共变量,方法等的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 同伦法
- 下一篇: C# 截取上传flv文件中其中一帧图片