您好,登錄后才能下訂單哦!
Protobuf現(xiàn)在已經(jīng)越來(lái)越多在移動(dòng)端游戲中使用,其序列化和反序列化非常方便開(kāi)發(fā)者使用,如果使用Unity開(kāi)發(fā),我們?cè)撊绾问褂??在這里給大家總結(jié)一下:
第一步:把其中“protobuf-net”文件夾 拷貝到unity 即可。
下載地址:https://github.com/mgravell/protobuf-net
我會(huì)在后面提供給大家下載。
第二步:建立一個(gè)新的文件smcs.rsp,內(nèi)容是-unsafe,注意不是下劃線。
第三步:如果Unity還報(bào)錯(cuò),需要我們把工程設(shè)置成.Net 2.0 subset。
通過(guò)以上設(shè)置我們的程序就可以同時(shí)在android和ios上運(yùn)行。
另一種解決方式:可以不用unsafe,在PlayerSettings里的Srcripting Define Symbols里加上宏FEAT_SAFE也可以在Xcode里編譯通過(guò)。
如果改成.Net 2.0還報(bào)錯(cuò),可以在增加gmcs.rsp內(nèi)容跟上面的一樣-unsafe。
我們?cè)诔绦蛑腥绾问褂肞rotobuf,下面我們舉例說(shuō)明:
比如我們需要在服務(wù)器和客戶端之間傳輸消息,我們可以這樣定義:
枚舉結(jié)構(gòu):
enum enumLoginGameResult
{
LoginGame_Success = 0;
LoginGame_error = 1;
}
消息結(jié)構(gòu)定義
message LoginGame
{
required uint32 uaid = 1; //賬號(hào)ID
optional enumCharType type = 2;
};
消息結(jié)構(gòu)體,required意思是必須要定義的,optional是可以選擇的,就是說(shuō)我們?cè)谑褂眠@個(gè)消息的時(shí)候,optional可以忽略的。還有一個(gè)是repeated 這個(gè)是list表,是數(shù)組。
消息之間可以通過(guò)import"文件名"調(diào)用對(duì)應(yīng)文件的函數(shù)。
比如我在 common.proto 文件里面定義了一個(gè)枚舉值或者消息都可以,
我需要在login.proto,里面調(diào)用就需要在login.proto 最前面寫上 import“common.proto”,然后就可以使用common.proto里面的消息或者是枚舉值了。
這樣定義的好處是C++或者C#都可以共同使用。
那如何使用,我們可以通過(guò)定義批處理進(jìn)行,比如生成.CC和.h。批處理寫法如下:
@echo off
set tool=..\Tools
rem===============
rem Support
set proto=.\common\common.proto
%tool%\protoc.exe--proto_path=.\common --cpp_out=.\common %proto%
pause
生成C#文件的批處理如下:
@echo off
set tool=..\3Party\protobuf-net\net
rem ===============================================
rem Support
set proto=login.proto
%tool%\protogen.exe -i:%proto% -o:%proto%.cs -q
pause
以上就是關(guān)于Protobuf的使用,我已將其源代碼上傳到51CTO下載中心,如有需要大家可以去下載,直接將其放到Unity里面使用即可。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。