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 給這個工程新增標頭檔案 ...