軟件介紹XLua框架是騰訊研發(fā)的Lua開(kāi)源插件,xLua為Unity、 .Net、 Mono等C#環(huán)境增加Lua腳本編程的能力,借助xLua,這些Lua代碼可以方便的和C#相互調(diào)用。 插件特性 總體 Lua虛擬機(jī)支持 Lua5.3 Luajit2.1 Unity3D版本支持 各版本均支持 平臺(tái)支持 windows 64/32 android ios 64/32/bitcode osx uwp webgl 互訪(fǎng)技術(shù) 生成適配代碼 反射 易用性 解壓即可用 開(kāi)發(fā)期無(wú)需生成代碼 生成代碼和反射間可無(wú)縫切換 更簡(jiǎn)單的無(wú)GC api 菜單簡(jiǎn)單易懂 配置可以多份,按模塊劃分,也可以直接在目標(biāo)類(lèi)型上打Attribute標(biāo)簽 自動(dòng)生成link.xml防止代碼剪裁 Plugins部分采用cmake編譯,更簡(jiǎn)單 核心代碼不依賴(lài)生成代碼,可以隨時(shí)刪除生成目錄 性能 Lazyload技術(shù),避免用不上的類(lèi)型的開(kāi)銷(xiāo) lua函數(shù)映射到c# delegate,lua table映射到interface,可實(shí)現(xiàn)接口層面無(wú)C# gc alloc開(kāi)銷(xiāo) 所有基本值類(lèi)型,所有枚舉,字段都是值類(lèi)型的struct,在Lua和C#間傳遞無(wú)C# gc alloc LuaTable,LuaFunction提供無(wú)gc訪(fǎng)問(wèn)接口 通過(guò)代碼生成期的靜態(tài)分析,生成*優(yōu)代碼 支持C#和Lua間指針傳遞 自動(dòng)解除已經(jīng)Destroy的UnityEngine.Object的引用 擴(kuò)展性 不用改代碼就可以加入Lua第三方擴(kuò)展 生成引擎提供接口做二次開(kāi)發(fā) 支持為如下C#實(shí)現(xiàn)打補(bǔ)丁 構(gòu)造函數(shù) 析構(gòu)函數(shù) 成員函數(shù) 靜態(tài)函數(shù) 泛化函數(shù) 操作符重載 成員屬性 靜態(tài)屬性 事件 Lua代碼加載 加載字符串 支持加載后立即執(zhí)行 支持加載后返回一個(gè)delegate或者LuaFunction,調(diào)用delegate或者LuaFunction后可傳腳本參數(shù) Resources目錄的文件 直接require 自定義loader Lua里頭require時(shí)觸發(fā) require參數(shù)透?jìng)鹘oloader,loader讀取Lua代碼返回 Lua原有的方式 Lua原有的方式都保留 Lua調(diào)用C# 創(chuàng)建C#對(duì)象 C#靜態(tài)屬性,字段 C#靜態(tài)方法 C#成員屬性,字段 C#成員方法 C#繼承 子類(lèi)對(duì)象可以直接調(diào)用父類(lèi)的方法,訪(fǎng)問(wèn)父類(lèi)屬性 子類(lèi)模塊可以直接調(diào)用父類(lèi)的靜態(tài)方法,靜態(tài)屬性 擴(kuò)展方法(Extension methods) 就像普通成員方法一樣使用 參數(shù)的輸入輸出屬性(out,ref) out對(duì)應(yīng)一個(gè)lua返回值 ref對(duì)應(yīng)一個(gè)lua參數(shù)以及一個(gè)lua返回值 函數(shù)重載 支持重載 由于lua數(shù)據(jù)類(lèi)型遠(yuǎn)比C#要少,會(huì)出現(xiàn)無(wú)法判斷的情況,可通過(guò)擴(kuò)展方法來(lái)來(lái)調(diào)用。 操作符重載 支持的操作符:+,-,*,/,==,一元-,<,<=, %,[] 其它操作符可以借助擴(kuò)展方法調(diào)用 參數(shù)默認(rèn)值 C#參數(shù)有默認(rèn)值,在lua可以不傳 可變參數(shù) 在對(duì)應(yīng)可變參數(shù)部分,直接輸入一個(gè)個(gè)參數(shù)即可,不需要把這些參數(shù)擴(kuò)到一個(gè)數(shù)組里頭 泛化方法調(diào)用 靜態(tài)方法可以自行封裝使用 成員函數(shù)可通過(guò)擴(kuò)展方法封裝使用 枚舉類(lèi)型 數(shù)字或字符串到枚舉的轉(zhuǎn)換 delegate 調(diào)用一個(gè)C# delegate +操作符 -操作符 把一個(gè)lua函數(shù)作為一個(gè)c# delegate傳遞給c# event 增加事件回調(diào) 移除事件回調(diào) 64位整數(shù) 傳遞無(wú)gc而且無(wú)精度損失 lua53下使用原生64位支持 可以和number運(yùn)算 以java的方式支持無(wú)符號(hào)64位整數(shù) table的自動(dòng)轉(zhuǎn)換到C#復(fù)雜類(lèi)型 obj.complexField = {a = 1, b = {c = 1}},obj是一個(gè)C#對(duì)象,complexField是兩層嵌套的struct或者class typeof 對(duì)應(yīng)C#的typeof操作符,返回Type對(duì)象 lua側(cè)直接clone decimal 傳遞無(wú)gc而且無(wú)精度損失 C#調(diào)用Lua 調(diào)用Lua函數(shù) 以delegate方式調(diào)用Lua函數(shù) 以L(fǎng)uaFunction調(diào)用lua函數(shù) 訪(fǎng)問(wèn)Lua的table LuaTable的泛化Get/Set接口,調(diào)用無(wú)gc,可指明Key,Value的類(lèi)型 用標(biāo)注了CSharpCallLua的interface訪(fǎng)問(wèn) 值拷貝到struct,class Lua虛擬機(jī) 虛擬機(jī)gc參數(shù)讀取及設(shè)置 工具鏈 Lua Profiler 可根據(jù)函數(shù)調(diào)用總時(shí)長(zhǎng),平均每次調(diào)用時(shí)長(zhǎng),調(diào)用次數(shù)排序 顯示lua函數(shù)名及其所在文件的名字及行號(hào) 如果C#函數(shù),會(huì)顯示這個(gè)是C#函數(shù) 支持真機(jī)調(diào)試 |
1深度技術(shù)win10正式版ghost(32位)旗艦......
2番茄花園win10 X86 ghost 標(biāo)準(zhǔn)通......
3番茄花園Win10_Ghost Win10 64......
4雨林木風(fēng) GHOST WIN10 X64 快速裝......
5深度技術(shù)GHOST WIN10 X64 尊貴專(zhuān)業(yè)......
6筆記本W(wǎng)in10系統(tǒng) 64位官方正式版2024年......
7筆記本win10正式版ghost(32位)旗艦免......
8雨林木風(fēng)win10(32位)ghost 修正專(zhuān)業(yè)......