隨著xlua的開源,其在專案中的使用也越來越廣泛。遊戲開發中我們經常會使用第三方庫如,json解析,網路協議等等,目前xlua目前內建的擴充套件庫:
1、針對luajit的64位整數支援;
2、函式呼叫耗時以及記憶體洩漏定位工具;
3、用於支援zerobranestudio的luasocket庫;
4、tdr 4 lua;
隨著使用專案的增加以及專案使用的深入程度,僅有這幾個擴充套件已經沒法滿足專案組了,而由於各個專案對擴充套件差異化比較大,以及手機平台對安裝包大小的敏感,xlua是無法通過預整合去滿足這些需求,結合官網的例程記錄下自己擴充套件的步驟以及遇到的錯誤
1、安裝cmake(根據自己電腦配置選擇合適的版本)
cmake安裝之後最好重啟下電腦,即便環境變數已經配置好,但是有時還是會不識別
根據例子修改cmakelists.txt檔案,接入擴充套件
把xlua的c原始碼包解壓到你unity工程的assets同級目錄下。
2、在cmakelists.txt加入擴充套件
#begin lua-rapidjson
set (rapidjson_src lua-rapidjson/source/rapidjson.cpp)
set_property(
source $
property compile_definitions
lua_lib
)
set (thirdpart_src $ $)
#end lua-rapidjson
3、修改執行bat檔案
比如windows 64位lua53版本是make_win64_lua53.bat,android的luajit版本是make_android_luajit.sh,要編譯哪個版本就執行相應的指令碼即可。
執行完編譯指令碼會自動拷貝到plugin_lua53或者plugin_luajit目錄,前者是lua53版本放置路徑,後者是luajit。
配套的android指令碼是在linux下使用的,指令碼開頭的ndk路徑要根據實際情況修改。雙擊執行結果如下圖:
然後把生成的plugin_lua53/plugins/x86_64/xlua.dll 直接覆蓋unity專案的assets/plugins/x86_64/xlua.dll
4、c#整合
所有lua的c擴充套件庫都會提供個luaopen_***的函式,***是動態庫的名字,比如lua-rapidjson庫該函式是luaopen_rapidjson,這類函式由lua虛擬機器在載入動態庫時自動呼叫,而在手機平台,由於ios的限制我們載入不了動態庫,而是直接編譯程序式裡頭。
為此,xlua提供了乙個api來替代這功能(luaenv的成員方法):
public void addbuildin(string name, luacsfunction initer)
name:buildin模組的名字,require時輸入的引數;
initer:初始化函式,原型是這樣的public delegate int lua_csfunction(intptr l),必須是靜態函式,而且帶monopinvokecallbackattribute屬性修飾,這個api會檢查這兩個條件。
我們以luaopen_rapidjson的呼叫來看看怎麼使用。
擴充套件luadll.lua類,用pinvoke把luaopen_rapidjson匯出到c#,然後寫乙個符合lua_csfunction定義的靜態函式,你可以在裡頭做寫初始化工作,比如luaopen_rapidjson的呼叫,以下是完整**:
namespace luadll
}
}
然後在lua虛擬機器建立時呼叫addbuildin:
luaenv.addbuildin("rapidjson", luadll.lua.loadrapidjson);
例子測試**
local rapidjson = require('rapidjson')
local t = rapidjson.decode('')
print(t.a)
t.a = 456
local s = rapidjson.encode(t)
print('json', s)
當以上步驟都完成時重啟unity報錯了,報錯資訊如下:
php 第三方擴充套件
到本地,解壓。安裝依賴 1.libmemcached 1.0.8 2.libmemcached devel 1.0.8 3.1 2 依賴3 libevent2 2.0.21 4.1 2 依賴4 cyrus sasl devel 2.1.23 5.4依賴cyrus sasl gssapi,cyrus ...
Python之安裝第三方擴充套件庫
如果你知道你要找的庫的名字,那麼只需要在右上角搜尋欄查詢即可。1 pip安裝擴充套件庫 1 安裝最新版本的擴充套件庫 cmd pip install django 2 安裝指定版本的擴充套件庫 cmd pip install django 1.9.7 3 使用 pip 檢視當前安裝的庫 cmd pi...
PyThon第三方庫
本文 自 戀花蝶的部落格 今天公司停電,沒上班。跑上來更新個部落格,跟大家分享一下我常用的幾個第三方 python 庫。python 語言之所以能夠如此流行,除了本身內建許多程式庫來保障快速開發之外,目不睱接的第三方庫也是一大主因。結合我目前的工作 網遊開發 我常用的幾個第三方庫如下 wxpytho...