1.控制台选择 控制台应用(.NET Framework)一定要看仔细
2先下载 luainterface.dll 和luanet.dll
下载地址
3.将luainterface.dll 添加引用并且点击属性始终复制或者有较新复制(会复制到对应项目路径下bin/Debug下)
编写的lua代码编码格式一定要调整 尽量使用ANSI 或者简体中文GB2312(具体怎么调百度对应编辑器调节编码格式设置)
并且lua文件调整成较新的复制
using System;
using LuaInterface;
namespace MyLuaInterface
{
class Program
{
static void Main(string[] args)
{
Lua lua = new Lua();
// lua.DoString("num=2"); // 这里执行一句lua代码
// lua.DoString("str ='name'");//这是执行lua文件
// var values= lua.DoString("return num , str");
// foreach (var item in values)
// {
// Console.WriteLine(item);
// }
//lua.DoFile("luatest.lua");
// 在C# 中注册普通方法到lua 中
// Program P = new Program();
//
// lua.RegisterFunction("test", P, P.GetType().GetMethod("test"));
//
// lua.DoString("test()");
//这里是将c# 静态方法注册到lua中执行
// lua.RegisterFunction("teststatic", null, typeof(Program).GetMethod("teststatic"));
// lua.DoString("teststatic()");
lua.DoFile("script.lua");
Console.ReadKey();
}
public void test() {
Console.WriteLine("hahA");
}
public static void teststatic()
{
Console.WriteLine("nihaoa ");
}
}
}
-- 这里是lua代码
Enemy ={}
local this = Enemy
this.name ="zhangsan"
this.hp =100
this.attack = function ( ... )
print("怪物攻击")
end
function this.move( ... )
this.attack();
print("敌人移动了");
end
this.move()
print(this.hp)
print(type(this.name))
-- 这里是lua代码 调用C#
require = "luanet"
luanet.load_assembly("System") -- 加载dll文件
Inte32 = luanet.import_type("System.Int32")
print(Inte32)