1. 關於模擬枚舉:
(1)首先設置起始的枚舉值為LManagerID.LUIManager +1
(2)然后在表中添加枚舉,注意要填寫兩次,一次是字符串一次是變量。
(3)調用ResetTableKeyValue函數,這里傳的參數分別為起始值與枚舉表。
(4)該方法的具體實現就是通過循環,里面的tmpTable[i]返回的是字符串,而外面的tmpTable[字符串]就表示把這個變量的值變成了beginValue+1。也就是對應枚舉+1。這樣后面就可以通過點來訪問這個枚舉值了。訪問到的也就是具體的數字了。
2. 關於模擬面向對象:也就是模擬封裝/繼承與多態
這里使用new()函數作為構造函數。當調用這個函數時,就相當於建了一個子類,然后把父類設置成元表,最后返回了子類。(當你希望這個類被繼承時,請寫上該構造)
在使用的時候,先調用父類的構造函數。
然后設置this(可以不設置,就是為了用起來方便)。
然后使用元方法__index。只有設置了元方法才算是繼承了父類。這個元方法的意思是如果在這個LRegisting表里沒找到,那就去LRegisting的元表里去找。
3. 模擬協程:
coroutine.step(幀數,句柄,為等待結束繼續執行時所需要的參數) 后兩個參數可以沒有
coroutine.yield() 掛起協程
step可以設定幀數。yield直接掛起協程,只有coroutine.resume() 可以重啟協程
例子:這里要注意了,一定要用點來寫方法。如果用冒號會自動調用!
4. 如何調用一些lua里沒有的類的方法:
(1) 在項目中查找CustomSetting.cs文件,進入找到一個函數
(2) 把你要使用的類注冊到這里
(3) 清空並重新generatorAll一下生成warp文件。
(4) 在lua中進行調用new()構造函數,或是addcomponent添加組件以獲取實例!
在tolua-lua-unityEngine文件夾下已經封裝好了一些unity中常用的值類型,可以不用包裝就拿來使用。同樣可以自定義一些功能類進行包裝后在lua內使用。
5. 關於一些方法的使用:(待補充)
(1)GetComponent方法,傳入的是string類型的參數。
(2)表的遍歷:
(3)表的注意事項:
在使用任何表內數據的時候都要table.data進行調用,否則就是比對字符串,要加上雙引號”” 如下面的id就要加上引號,因為前面沒有加表名!
表在聲明的同時賦值只能聲明一層空間。如:
Table={}
Table[”1”][“2”]=2 會報錯。
Table={{},{}}
Table[”1”][“2”]=2 編譯通過並能正常賦值。
commonfuc 里面存放了lua方法的API。
通過generateAll把對應C#文件生成為wrap文件前,需要在CustomSetting里進行注冊
(4)在lua里怎么去掉字符串的括號:
使用gsub函數,三個參數分別是:要編輯的字符串,被替換的字符,替換后的字符
其中括號要用中括號括上才能去掉,不然去不掉。(不能使用[(Clone)]會亂碼)
(5)在lua中使用二維數組:
(6)生成隨機數:math.random(x,y) math.abs求絕對值
(7)可變參數:Lua將函數的參數放在一個叫arg的表中
(8)#操作符,用來獲取表中最大的鍵值,只對連續鍵值有效