[C#/Lua]C#和Lua交互的Demo
2012-04-28 17:30
423 查看
最近研究了下Lua和C#的交互,遇到C#里面的变参函数不能在lua调用的问题,后来用arg这个table变量解决了,贴个代码备忘下吧。。。C#需要引用LuaInterface。。。
luaDemo_1.lua,放在C#生成的EXE目录下,一般比如Debug目录下:
luaDemo_2.lua,也放在EXE目录下:
using System; using LuaInterface; namespace LuaDemo { class MyLuaEngine { public void MyCSPrint(LuaTable luaTbl) { // pairs //foreach (object oKey in luaTbl.Keys) //{ // if (oKey.ToString() == "n") // “参数个数”索引 // continue; // Console.Write("{0}\t", luaTbl[oKey]); //} // ipairs for (int i = 1; i <= int.Parse(luaTbl["n"].ToString()); i++) { Console.Write("{0}\t", luaTbl[i]); } Console.WriteLine(); } } class Program { static void Main(string[] args) { Lua luaVM = new Lua(); MyLuaEngine myLuaEngine = new MyLuaEngine(); Console.WriteLine("LuaDemo Starting..."); Console.WriteLine("By TZWSOHO 2012"); luaVM.RegisterFunction("MyCSPrint", myLuaEngine, myLuaEngine.GetType().GetMethod("MyCSPrint")); // Lua 调用 C# 函数 luaVM.DoFile("luaDemo_1.lua"); luaVM.DoString("Print(nil, \"测试啊啊testing~~~\");"); // C# 调用 Lua 函数 luaVM.DoFile("luaDemo_2.lua"); LuaFunction luaFunc = luaVM.GetFunction("MyLuaPrint"); if (luaFunc != null) { object[] objRet = luaFunc.Call("abc", 123); Console.WriteLine("函数返回 {0} 个参数!", objRet.Length); } else { Console.WriteLine("获取 lua 函数失败!"); } Console.WriteLine("按任意键退出..."); Console.ReadKey(); } } }
luaDemo_1.lua,放在C#生成的EXE目录下,一般比如Debug目录下:
-- 使 _G.print 函数重定向到 C# 里面的自定义函数 local print = MyCSPrint -- 因为这个函数后面要给 luaDemo_2.lua 使用 -- 所以这里不能用 local 修饰符 function Print(...) -- 将所有参数化为一个 table 传给 C# 的函数 -- arg["n"] 为参数个数 print(arg) end local t = { "123a", "cba223" } Print(t) Print("测试test~~~@$#!%@#$%&^(^&*)") Print("测试test~~~@$#!%@#$%&^(^&*)", t)
luaDemo_2.lua,也放在EXE目录下:
-- 这里不能用 local 修饰符 function MyLuaPrint(...) local t = { "haha", 123, szContent } --require("luaDemo_1") --dofile("luaDemo_1.lua") loadfile("luaDemo_1.lua") Print(...) -- 调用 luaDemo_1.lua 里面的打印函数 return 2012, t, "abc" end
C#用的是控制台工程
相关文章推荐
- c#和 lua 简单交互
- 【Unity+Lua】实测如何性能优化(Lua和C#交互篇)
- c#调用脚本语言Lua——简单Demo
- 用好lua+unity,让性能飞起来——lua与c#交互篇
- Unity C#与Xlua的交互 C#调用Lua CSharpCallLua
- Tolua使用笔记二:lua与C#的函数,变量交互方法
- Lua_ uLua_Lua和C#变量交互_018
- 用好Lua+Unity,让性能飞起来——Lua与C#交互篇
- Lua与C#交互
- Tolua使用笔记二:lua与C#的函数,变量交互方法
- C#与lua交互
- BOLT.NET中的关于数据库链接和使用的LUA与C#语言的交互设计
- Lua学习之路_C#与Lua的交互001
- Unity3d ulua c#与lua交互+wrap文件理解
- lua与c#交互篇(性能)
- c# lua 简单交互
- c# lua 简单交互
- 用好Lua+Unity,让性能飞起来——Lua与C#交互篇
- Lua基本语法-lua与C#的交互(相当简单详细的例子)
- c#调用脚本语言Lua——简单Demo