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