閱前提示
本系列為作者在學習框架與編寫框架時的心得與筆記
適合人群:all
閱讀方式:工具文章
本系列會不斷更新,如果對你有所幫助,點讚收藏吧:)
文章目錄
閱前提示
xlua
配置[luacallcsharp]
[csharpcalllua]
初始化小節
xlua
xlua的快速使用正如它的文件中所描述的那樣,僅僅三行就完事了~
xlua.luaenv luaenv = new xlua.luaenv();
luaenv.dostring(「cs.unityengine.debug.log(『hello world』)」);
luaenv.dispose();12
3接下來就是如何將這三行所包含的內容接入到我們的工程框架中了。
配置在使用unity做開發的過程中,多多少少在用到lua時會需要和c#進行一些資料互動。在xlua中,無論是[luacallcsharp]還是[csharpcalllua]用到的乙個方式:wrap。
wrap,可以理解成**「包裝」**。比如 我們想要在lua中獲取unity中的乙個gameobject,那我們lua中的**基本上會寫成如下的形式
local gameobject = cs.unityengine.gameobject.find(「name」)
1可以看出,這基本上和我們在c#端的書寫方式並沒有什麼差別,但實際上他們的原理卻很不一樣。
很明顯的一點,lua的資料型別根本無法支援gameobject,所以我們引入了wrap。無論使用xlua還是tolua,在初始化的過程中必不可少的是將我們可能需要使用到的c#類、方法包裝起來,以便在lua中可以相對應的進行資料傳遞。當我們在lua中需要呼叫c#的方法時,將通過入棧出棧的方式將 「資料」 進行傳遞(注:這裡的資料是經過處理的每個object的id),最終完成lua與c#的資料互動。
[luacallcsharp]
講到著,大致是說清楚了我們在配置什麼了… 根據自身的需求將需要在lua中被呼叫的東西都配置好。
[luacallcsharp]
public static list luacallcsharp = new list()12
3456
78910
1112
1314
1516
1718
19[csharpcalllua]
當然,也可以配置c#直接呼叫lua的callback,著一般會配合luacallcsharp中的具體方法來使用。具體配置**xlua中也提供了參考這裡**太長了就不再放出了。
初始化配置說完後,我們就可以針對一開始提及的三行**進行初始化了。
xlua.luaenv luaenv = new xlua.luaenv();
啟動xlua,建立luaenv例項,這裡面會做xlua初始化的工作,其中就包含了wrap配置中的內容。
luaenv.dostring(「cs.unityengine.debug.log(『hello world』)」);
載入lua指令碼,xlua提供了dostring()提供了兩種方式:string/byte ,實際上最終都是變為byte。
用例中的該方式比較直接,適合用來做簡單的性測使用,一般專案中並不會這麼用。
xlua提供了luaenv.addloader(customloader loader) 方法,讓我們自定義載入指令碼的載入器。
public delegate byte customloader(ref string filepath);
只需定義乙個返回值為 byte 的方法即可。
luaenv.dispose();
dispose就過多介紹了,在關閉的時候當然是需要對其進行釋放的~
這樣,xlua的接入就已經算是初步完成了。以下是作者框架中的相關**
//初始化
public override void init()
//載入器
public byte xlualoader(ref string filename)
});if(filepath.isemptyornull())
return null;
return file.readallbytes(filepath);
#endif}1
2345
6789
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
小節因為作者目前還處於緩慢地擼框架階段,所以對於xlua的使用並沒有很深入的了解,也沒有淌過xlua的坑,所以目前就不再這裡在多說太多啦。就作者來言,對比了tolua,xlua我覺得在接入上面會舒服很多。(因為二者我都接入了,因為我希望我的框架hotscript部分能滿足所有的lua使用者~)
推薦閱讀:xlua在unity中的用法摘要.....
記錄xxl job的接入
第一步 先導入pom檔案 com.xuxueli xxl job core 2.1.2 要注意版本號 相對應的版本號 對應的cinfig和方法不一樣 第二步 匯入xxl的config配置類 import com.xxl.job.core.executor.impl.xxljobspringexecu...
專案後期Lua接入筆記01 框架及IDE
專案做到後期時,有一些要求行比較高的模組需要做到無bug,及時更新,這些模組一般是活動系統,充值系統等,但是後期接入的話要考慮現有c 的框架。今天開始記錄一下遇到的一些坑。框架選擇上,選的是tolua框架,主要是以前有過ulua的一些經驗,相對來說熟悉度搞一些。當然也不是純粹的外掛程式框架,是基於外...
XLua框架學習(三)C 訪問Lua中的全域性函式
function add print add endusing xlua luaenv luaenv newluaenv luaenv.dostring require csharpcalllua 需要先將lua指令碼載入進來 action add1 luaenv.global.get action...