adfasdfadf
C#脚本:
namespace LuaInterfaceSolution
{
class Program
{
public string sre = "123";
public static int num =456;
public string LuaTest( string str)
{
Console.WriteLine("Lua调用C#成功");
return str;
}
public void LuaTest_2(string str ,out int num )
{
Console.WriteLine("Static Lua调用C#成功");
num = str.Length;
}
public int OutTest(string g, out int a)
{
a = 1;
return a+1;
}
}
}
Lua调用 上面的C# :
--require("luanet")-- lua 调用C#
--luanet.load_assembly("System")--引入命名空间
--Int32= luanet.import_type("Syste.Int32")-- 指定该命名空间下的类
--num =Int32.Parse("12313")
--print(num)
-------------分割线-------------------------
--引入命名空间 将luanet 文件放到debug路径下
luanet.load_assembly("LuaInterfaceSolution")
--指定命名空间下的类
mainClass=luanet.import_type("LuaInterfaceSolution.Program")
--print (mainClass.num)
--实例化对象
mc=mainClass()
--调用变量
--print (mc.sre)
--调用方法
--print (mc:LuaTest("ok"))
--print (mc:LuaTest_2("okok"))
--下面调用out关键字函数有问题 暂未解决
a,b,c,d= mc :OutTest("a ",1)
print (a,b,c,d )
------------------分割线----------------------------------------------------------------------
C#调用Lua:
//C# 调用lua
static void Main(string[] args)
{
// 实例化lua
Lua lua = new Lua();
第一种
//lua["m_Age"] = 45;
//lua["m_name"] = "string name";
//lua.NewTable("M_HeroTable");
//Console.WriteLine(lua["m_Age"] + "======" + lua["m_name"]);
第二种 使用Lua.DoString()编写lua
//lua.DoString("account=123456");
//lua.DoString("str=\"aisjdfaij\"");
//object[] result = lua.DoString("return str ,account");
//foreach (var item in result )
//{
// Console.WriteLine(item);
//}
//第三种 (常用)
lua.DoFile("TestLua.lua");
//TestClass tc = new TestClass();
往lua中注册函数
//lua.RegisterFunction("MyNormalCLRTestMethod",tc, tc.GetType().GetMethod("MyNormalCLRTestMethod"));
//lua.RegisterFunction("StaticNormal", null, typeof(TestClass).GetMethod("StaticNormal"));
lua.DoString("MyNormalCLRTestMethod()");
调用注册的方法
//lua.DoString("MyNormalCLRTestMethod()");
//lua.DoString("StaticNormal()");
//lua.DoString("Name.Test(4)");
//关闭Lua虚拟机
lua.Dispose();
}