xlua和c 的互動原理

2021-10-12 15:43:27 字數 819 閱讀 5143

il中間語言,高階語言和機器語言中間的一種語言(表示式的方式存在),可以根據不同機器平台生成對應的機器語言

ios有**大小限制,ios9.0之後,總限制是900m

xlua和c#的互動原理

1、在c#中將需要熱更的類標記(標籤,靜態列表,動態列表)

2、生成函式聯結器來連線lua指令碼和c#函式

3、對編譯生成的dll進行修改

4、把**的執行路徑修改到lua指令碼中(如果lua中執行了對應的熱修復函式,則把il中對應的函式替換為對應的lua函式)

public class calc

}打了hotfix標籤後,xlua會在il層面注入**,注入之後這個類會類似這樣:

public class calc

}如果lua中執行了hotfix呼叫,hotfix_add會指向乙個lua的適配函式。

動態列表設定

hotfix後可以加乙個標誌,hotfixflag.stateless或者hotfixflag.stateful, 如果不加預設為stateless模式。

在stateless模式下,c#物件直接作為hotfix函式的self引數,即第乙個引數。

在stateful模式下,可以在hotfix的建構函式中返回乙個table,其他的hotfix函式的self引數為建構函式返回的table;

如果未在lua中定義建構函式,則self為nil。

需要用到的知識點:

assembly.load : 引導程式集

assembly.load.getexportedtypes:獲取此程式集中定義的公共型別,這些公共型別在程式集外可見。也就是被public定義的類或者函式

C 與 Lua 互動原理和優化

過程過程盡量不要在 lua 中傳遞 unity 中的類,盡量只傳遞int,float,double 型別 解決方法 在 c 中封裝方法 unity 型別的賦值,使用 id int 代表對應 object 的傳遞 呼叫的 c 方法引數數量盡量少與4個 c 方法盡量為靜態方法 減少 lua gc 在 l...

C 與Lua互動原理

具體步驟 1,找到cocos自帶的繫結工具指令碼檔案genbindings.py,在cocos工程的frameworks cocos2d x tools tolua這個目錄下,把這個檔案開啟。2,在開啟的genbindings.py檔案下面找到這麼一段 這裡就是執行這個指令碼會自動生成lua繫結 的...

Lua和C 的互動

step1 搭建好vs和lua相互動的環境 2.有lua lib.lib這個檔案 3.開始配置 滑鼠放在工程名那 右鍵選屬性 位址就選上面有原始碼的檔案路徑。如上,把引用目錄點開進行編輯位址是選lib檔案的位址 如上,吧庫目錄點開進行編輯位址也是lib檔案的位址 step2 給這個工程新增標頭檔案 ...