不同版本Lua介绍
luainterface、nlua、ulua、unilua、cstolua、slua
luainterface:LuaInterface是開(kāi)源的C#的lua橋接庫(kù),配合開(kāi)源庫(kù)luanet,能輕松實(shí)現(xiàn)Lua,C#相互調(diào)用和參數(shù)事件傳遞。但作者僅完成了windows程序的功能實(shí)現(xiàn),跨平臺(tái)并沒(méi)有完成,作者于2013年4月30日停止更新luainterface,并推薦大家關(guān)注luainterface的一個(gè)分支Nlua。Nlua是實(shí)現(xiàn)跨平臺(tái)的Luainterface的升級(jí)版,uLua和NLua都是基于此庫(kù)升級(jí)編寫(xiě)
nlua:是LuaInterface的一個(gè)分支,繼承了Luainterface的所有優(yōu)點(diǎn),并將Luanet庫(kù)功能集成到代碼中,實(shí)現(xiàn)跨平臺(tái)(Windows, Linux, Mac, iOS , Android, Windows Phone 7 and 8),對(duì)ios平臺(tái)做了特殊處理,如支持了委托的橋接。
配合NLua有2種Lua實(shí)現(xiàn),第一種是KeraLua,基于原生Lua,將C API 進(jìn)行簡(jiǎn)單的包裝,使C# 可以方便使用 Lua C API,第二種是KopiLua,C#實(shí)現(xiàn)的Lua vm(對(duì),和UniLua一樣也是純C#實(shí)現(xiàn)的Lua vm)。以下為關(guān)于兩種方案的比較。
使用KeraLua,必須將lua 編譯成 Unity3D Plugin,并將編譯好的文件放到Plugins文件夾下相應(yīng)的平臺(tái)文件夾中。并定義#define USE_KERALUA
使用KopiLua,定義#define USE_KERALUA即可
ulua:基于luainterface升級(jí)版,uLua = Lua + LuaJIT + LuaInterface,全平臺(tái)支持。在原生C的基礎(chǔ)上使用LuaJit進(jìn)行加速,如果uLua效率高,LuaJit有很大功勞,作者僅僅提供了uLua插件包,并未提供整套插件源碼。此外,作者重寫(xiě)了loadfile、print等api,使用非常簡(jiǎn)單,導(dǎo)入package,就可以開(kāi)始編寫(xiě)代碼了。
unilua:是云風(fēng)團(tuán)隊(duì)阿南的作品,是lua5.2的C#版,
純C#的Lua 5.2實(shí)現(xiàn),是不是感覺(jué)似曾相識(shí),對(duì)的,KopiLua也是純C#實(shí)現(xiàn)的Lua vm,雖然Unilua出名,但是沒(méi)有KopiLua的配套庫(kù)好用,其自身同的Ffi庫(kù),是實(shí)驗(yàn)性質(zhì)的庫(kù),不完善,作者不推薦使用,雖然作者在其商業(yè)項(xiàng)目中使用,但是這只是其中一部分代碼,Unilua和C#中間層的代碼作者并沒(méi)有開(kāi)源。UniLua僅僅提供了Lua原生的接口,如果要在Lua代碼中調(diào)用C#,使用就需要把Luanet 移植到Unilua代碼中,總的來(lái)說(shuō)很蛋疼,據(jù)推測(cè)Unilua方法都是使用Lua標(biāo)準(zhǔn)的命名方式,所以將luanet源碼中所有C接口全部手動(dòng)改寫(xiě)成Unilua 的接口,就可以使用,這個(gè)工作量,等閑的時(shí)候把玩比較好。
cstolua:cstolua是作者對(duì)ulua的擴(kuò)展,提高了效率
slua:也是從ulua擴(kuò)展而來(lái),官方說(shuō)效率比cstolua還高,不過(guò)也有很多人質(zhì)疑過(guò) http://www.ulua.org/cstolua.html ? ?http://www.slua.net/ ??http://www.sineysoft.com/post/164
效率
cstolua >?ulua >?nlua >?luainterface >?unilua
其他熱更新方式:李總的c#light(L#)、JSBinding
轉(zhuǎn)載于:https://www.cnblogs.com/MrZivChu/p/luaVersion.html
總結(jié)
- 上一篇: struts2 ajax请求发现执行ac
- 下一篇: fps 每秒刷新的频率