?一:
new lua().DoFile("myLua.lua"); ? ? ? ? ? ? ?//執(zhí)行l(wèi)ua腳本 ??? ?/myLua.lua:要 ? ? ? ? 執(zhí)行的lua的腳本名字
new lua().DoString("num = 2"); ? ? ? ? ? ? //讀取腳本
注意:腳本文件必須和工程目錄所在是同一個(gè)路徑不然會(huì)找不到lua的 ? ? ? ? ?腳本
對lua腳本的位置放置:
? ? ? 1)直接將lua文件,放在工程目錄下面的Debug文件夾下
? ? ? ?2)將lua腳本的屬性中 "復(fù)制到輸出目錄" 選擇“始終復(fù)制”
二:c#將方法注冊進(jìn)lua
三:lua中使用c#中的自定義類
--1.導(dǎo)入luanet程序集拢切,該程序集負(fù)責(zé) lua call C#
require “l(fā)uanet”
--2.加載程序集(命名空間)
uanet.load_assembly(“System”) ? ? ? ? // 加載程序集(我們說過程序集其實(shí)就是.exe或者.dll文件)
--3.獲取類別(獲取類名)
Test = luanet.import_type(“System.Test”) ? ? ?//引入類(Test就是類名)
注意:在lua中使用c#類創(chuàng)建對象的時(shí)候,會(huì)自動(dòng)的匹配最合適的構(gòu)造方法
--4.調(diào)用構(gòu)造函數(shù)初始化C#腳本的類對象
--調(diào)用無參數(shù)的構(gòu)造函數(shù)
-- test = Test()
--調(diào)用有參數(shù)的構(gòu)造函數(shù) ----int
-- test = Test(10)
--調(diào)用有參數(shù)的構(gòu)造函數(shù) ----string
-- test = Test("10")
-- lua調(diào)用C#構(gòu)造函數(shù)規(guī)則---> 自動(dòng)匹配最近的那個(gè)
-- -對于某些情況并不適用蒂萎,比如說C#函數(shù)中有兩個(gè)一個(gè)參數(shù)的構(gòu)造函數(shù)重載時(shí)即會(huì)發(fā)生匹配錯(cuò)誤的情況
--- 這種情況我們需要手動(dòng)指定調(diào)用哪個(gè)構(gòu)造函數(shù)
test_argInt = luanet.get_constructor_bysig(Test,"System.String")
t = test_argInt(3)
-- 5.調(diào)用C#屬性
print(t.LanguageNume)
-- 調(diào)用Test類中的TestPrint()方法,使用的是":"
t:TestPrint(10);
-- 調(diào)用Test類中的靜態(tài)方法,使用的是"."
Test.TestStatciPrint(9)
--調(diào)用帶有ref參數(shù)的方法
t:RefMethod(8)
--調(diào)用帶有out參數(shù)的方法(帶有out的參數(shù)可以不寫淮椰,即不傳參數(shù))
--? var,var2 = t:OutMethod("hello")
-- print(var2)
-- v1,v2,v3,v4 = t:OutMethod(10)
tb = t:OutMethod(10)
print(type(tb))
-- 1.調(diào)用的函數(shù)有返回值五慈,該多少就多少
-- 2.調(diào)用的函數(shù)沒有返回值,lua默認(rèn)有返回值主穗,值為 nil
-- 3.調(diào)用的函數(shù)中帶有out關(guān)鍵字,lua默認(rèn)處理為該函數(shù)有返回值泻拦,返回值為out修飾的參數(shù)
-- 4.如果函數(shù)存在返回值并且同時(shí)存在out參數(shù)列表,此時(shí)函數(shù)返回值無效忽媒,第一個(gè)參數(shù)返回的是最后一個(gè)out類型的參數(shù)争拐,剩下的順序排列