LuaInterface是C#與Lua連接的橋梁
LuaInterface是一個開源項目工程,內部有兩個核心DLL文件:
LuaInterface.dll:在C#中操作Lua代碼需要依賴該文件;
luanet.dll:在Lua中訪問C#的類庫腳本需要依賴該文件
將兩個dll文件拷貝到項目工程
項目工程設置"引用"導入LuaInterface.dll
將兩個dll的屬性都設置成"如果較新則復制"
操作:
引入LuaInterface命名空間
實例化Lua解析器對象[在C#中執行Lua代碼,靠的就是這個對象]
Lua lua = new Lua();
Lua解析器對象操作Lua代碼空間
使用Lua解析器對象,往Lua代碼空間內寫入變量,然后再讀取使用變量
(絕大多數情況,直接在C#中使用Lua解析器對象,加載一個Lua腳本文件進行運行)
C#內執行Lua代碼:
語法格式 Lua解析器對象.DoString("Lua代碼");
注意:
DoString()方法主要用於執行一些較短的Lua代碼片段
DoString()方法執行過的代碼,都會添加到Lua代碼空間,在Lua文件中,是直接可以訪問到這些代碼的
//創建一個Lua解析器 Lua lua = new Lua();
//變量的聲明和訪問 lua.DoString("name = 'cxk' age = 72 address = 'beijing'"); lua.DoString("print(name, age, address)"); //for循環語句 lua.DoString(@"for i = 0, 10, 1 do print(i) end"); //函數的定義與調用 lua.DoString(@"function Show() print('lua show Function') end Show() "); //table數組聲明與訪問 lua.DoString("myArray = { 'AAA', 'BBB', 'CCC', 'DDD'}"); lua.DoString(@"for i = 1, table.getn(myArray), 1 do print(myArray[i]) end");
C#內執行Lua文件
Lua解析器對象.DoFile("[路徑]Lua文件.lua") lua文件編碼記得改為UTF-8或者ANSI
Lua lua = new Lua(); lua.DoFile("xxx.lua"); //GetString() 取Lua中字符串數據 lua.GetString("name"); //GetNumber() 取Lua中數值數據 lua.GetNumber("age"); //GetFunction 取Lua中的函數,只需寫函數名 LuaFunction luaShow = lua.GetFunction("Show"); luaShow.Call();//執行lua中的函數 LuaFunction add = lua.GetFunction("Add"); System.Object[] obj = add.Call(10, 20);
lua訪問已存在的C#代碼
1導入luanet.dll require "luanet"
2獲取程序集 luanet.load_assembly("程序集名")
3獲取類型 變量名=luanet.import_type("程序集名.類名")
require "launet" luanet.load_assembly("three") Calc = luanet.import_type("three.Calc") print(Calc.name) print(Calc.Jia(10, 20))
lua訪問C#類庫
require "launet" luanet.load_assembly("System") Console = luanet.import_type("System.Console") Console.WriteLine("")