lua學習筆記3--lua與c#交互


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("")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM