002.xlua游戲中的熱基于unity2017源碼、素材_第1頁
002.xlua游戲中的熱基于unity2017源碼、素材_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C# APILuaEnv 類object DoString(string c描述:執(zhí)行一個(gè)代碼塊。參數(shù):k, string ckName = chuck, LuaTable env = null)cck: Lua 代碼;kName: 發(fā)生 error 時(shí)的 debug 顯示信息中使用,指明某某代碼塊的某行錯(cuò)誤;env :為這個(gè)代碼塊;返回值:代碼塊里 return 語句的返回值;比如:return 1, “o”,DoString 返回將包含兩個(gè) object, 一個(gè)是 double 類型的 1, 一個(gè)是 string 類型的“例子:o”LuaEnv luaenv = new LuaEnv();

2、object ret = luaenv.DoString(pr(o)rnreturn 1)UnityEngine.Debug.Log(ret=+ret0);luaenv.Dise()T LoadString(string c描述:k, string ckName = ck, LuaTable env = null)加載一個(gè)代碼塊,但不執(zhí)行,只返回類型可以指定為一個(gè) delegate 或者一個(gè) LuaFunction參數(shù):cck: Lua 代碼;kName: 發(fā)生 error 時(shí)的 debug 顯示信息中使用,指明某某代碼塊的某行錯(cuò)誤;env :為這個(gè)代碼塊;返回值:代表該代碼塊的 delega

3、te 或者 LuaFunction 類;LuaTable Global;描述:代表 lua 全局環(huán)境的 LuaTablevoid Tick()描述:清除 Lua 的未手動(dòng)的 LuaBase(比如,LuaTable, LuaFunction),以及其它一些事情。需要定期調(diào)用,比如在 MonoBehaviour 的 Update 中調(diào)用。void AddLoader(CustomLoader loader)描述:增加一個(gè)自定義 loader參數(shù):loader:就一個(gè)回調(diào),其類型為 delegate byte CustomLoader(ref string filepath),當(dāng)一個(gè)文件被 requ

4、ire 時(shí),這個(gè) loader 會被回調(diào),其參數(shù)是 require 的參數(shù),如果該 loader 找到文件,可以將其讀進(jìn)內(nèi)存,返回一個(gè) byte 數(shù)組。如果需要支持調(diào)試的話,而 filepath 要設(shè)置成 IDE 能找到的路徑(相對或者絕對都可以)void Dise()描述:Dise 該 LuaEnv。LuaEnv 的使用建議:全局就一個(gè)實(shí)例,并在 Update 中調(diào)用 GC 方法,完全不需要時(shí)調(diào)用 DiseLuaTable 類T Get(string key)描述:獲取在 key 下,類型為T 的 value,如果不存在或者類型不匹配,返回 null;T GetInPath(string p

5、ath)描述:和 Get 的區(qū)別是,這個(gè)會識別 path 里頭的“.”,比如 var i = tbl.GetInPath(“a.b.c”)void SetInPath(string path, T val)描述:和 GetInPaht對應(yīng)的 setter;void Get(TKey key, out TValue value)描述:上面的API 的 Key 都只能是string,而這個(gè) API 無此限制;void Set(TKey key, TValue value)描述:對應(yīng) Get的 setter;T Cast()描述:把該 table 轉(zhuǎn)成一個(gè) T 指明的類型,可以是一個(gè)加了 CShar

6、pCallLua有默認(rèn)構(gòu)造函數(shù)的class 或者 struct,一個(gè) Dictionary,List 等等。的erface,一個(gè)void SetMeable(LuaTable meable)描述:設(shè)置 meable 為 table 的 meableLuaFunction 類注意:用該類Lua 函數(shù)會有 boxing,unboxing 的開銷,為了性能考慮,需要頻繁調(diào)用的地方不要用該類。建議通過 table.Get獲取一個(gè) delegate 再調(diào)用(假設(shè) ABCDelegate 是 C#的一個(gè) delegate)。在使用使用 table.Get之前,請先把 ABCDelegate 加到代碼生成列

7、表。object Call(params object args)描述:以可變參數(shù)調(diào)用 Lua 函數(shù),并返回該調(diào)用的返回值。object Call(object args, Type returnTypes)描述:調(diào)用 Lua 函數(shù),并指明返回參數(shù)的類型,系統(tǒng)會自動(dòng)按指定類型進(jìn)行轉(zhuǎn)換。void SetEnv(LuaTable env)描述:相當(dāng)于 lua 的 setfenv 函數(shù)。Lua APICS 對象CS.namespace.class(.)描述:新建一個(gè) C#對象實(shí)例,例如:local v1=CS.UnityEngine.Vector3(1,1,1) CS.namespace.class

8、.field描述:Pr一個(gè) C#靜態(tài)成員,例如:(CS.UnityEngine.Vector3.one)CS.namespace.enum.field描述:一個(gè)枚舉值typeof 函數(shù)類似 C#里頭的 typeof 關(guān)鍵字,返回一個(gè) Type 對象,比如需要一個(gè) Type 參數(shù),這時(shí)可以這么用ponent(typeof(CS.UnityEngine.ParticleSystem)ponent 其中一個(gè)重載無符號 64 位支持u64.tostring描述:無符號數(shù)轉(zhuǎn)字符串。u64.divide描述:無符號數(shù)除法。pare描述:無符號比較,相對返回 0,大于返回正數(shù),小于返回負(fù)數(shù)。u64.rema

9、inder描述:無符號數(shù)取模。u64.parse描述:字符串轉(zhuǎn)無符號數(shù)。xlua.structclone描述:克隆一個(gè) c#結(jié)構(gòu)體cast 函數(shù)指明以特定的接口對象,這在實(shí)現(xiàn)類無法的時(shí)候(比如ernal 修飾)很有用,這時(shí)可以這么來(假設(shè)下面的 calc 對象實(shí)現(xiàn)了 C#的 PerformentTest.ICalc 接口):cast(calc, typeof(CS.PerformentTest.ICalc)然后就木有其它 API 了csharp 對象和一個(gè) table 一樣,調(diào)用函數(shù)跟調(diào)用 lua 函數(shù)一樣,也可以通過操作符c#的操作符,下面是一個(gè)例子:local v1=CS.UnityEng

10、ine.Vector3(1,1,1) local v2=CS.UnityEngine.Vector3(1,1,1) v1.x = 100v2.y = 100pr(v1, v2)local v3 = v1 + v2prpr pr(v1.x, v2.x) (CS.UnityEngine.Vector3.one)(CS.UnityEngine.Vector3.Distance(v1, v2)類型基本數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型LuaTable:C#側(cè)指明從 Lua 側(cè)輸入(包括 C#方法的輸入?yún)?shù)或者 Lua 方法的返回值)LuaTable 類型,則要求 Lua側(cè)為 table。或者 Lua 側(cè)的 tabl

11、e,在 C#側(cè)未指明類型的情況下轉(zhuǎn)換成 LuaTable。 LuaFunction:C#側(cè)指明從 Lua 側(cè)輸入(包括 C#方法的輸入?yún)?shù)或者 Lua 方法的返回值)LuaFunction 類型,則要求 Lua 側(cè)為 function?;蛘?Lua 側(cè)的 function,在 C#側(cè)未指明類型的情況下轉(zhuǎn)換成 LuaFunction。 LuaUserData:對應(yīng)非 C# Managered 對象的 lua userdata。class 或者 struct 的實(shí)例:從 C#傳一個(gè) class 或者 struct 的實(shí)例,將的成員到 Lua 的 userdata,并通過 index該 userda

12、taC#側(cè)指明從 Lua 側(cè)輸入指定類型對象,Lua 側(cè)為該類型實(shí)例的 userdata 可以直接使用;如果該指明類型有默認(rèn)構(gòu)造函數(shù),Lua 側(cè)是 table 則會自動(dòng)轉(zhuǎn)換,轉(zhuǎn)換規(guī)則是:調(diào)用構(gòu)造函數(shù)構(gòu)造實(shí)例,并用 table對應(yīng)字段轉(zhuǎn)換到 c#對應(yīng)值后賦值各成員。method, delegate:成員方法以及 delegate 都是對應(yīng) lua 側(cè)的函數(shù)。C#側(cè)的普通參數(shù)以及參數(shù),對應(yīng) lua 側(cè)函數(shù)參數(shù);C#側(cè)的返回值對應(yīng)于 Lua 的第一個(gè)返回值;引用參數(shù)和 out 參數(shù)則按序?qū)?yīng)于 Lua 的第 2 到第 N 個(gè)參數(shù)。C#類型Lua 類型LuaTabletableLuaFunctionfuncti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論