溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析

發(fā)布時間:2021-12-16 13:57:19 來源:億速云 閱讀:673 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細講解有關(guān)Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Google Protocol Buffer( 簡稱 Protobuf) 是 Google 公司內(nèi)部的混合語言數(shù)據(jù)標準,目前已經(jīng)正在使用的有超過 48,162 種報文格式定義和超過 12,183 個 .proto 文件。他們用于 RPC 系統(tǒng)和持續(xù)數(shù)據(jù)存儲系統(tǒng)。

Protocol Buffers 是一種輕便高效的結(jié)構(gòu)化數(shù)據(jù)存儲格式,可以用于結(jié)構(gòu)化數(shù)據(jù)串行化,或者說序列化。它很適合做數(shù)據(jù)存儲或 RPC 數(shù)據(jù)交換格式??捎糜谕ㄓ崊f(xié)議、數(shù)據(jù)存儲等領(lǐng)域的語言無關(guān)、平臺無關(guān)、可擴展的序列化結(jié)構(gòu)數(shù)據(jù)格式。目前提供了 C++、Java、Python 三種語言的 API。

google protocol buffers的應(yīng)用范圍非常廣泛,但對于unity3d開發(fā)者來說,protobuf的最大用處在于編寫網(wǎng)絡(luò)游戲時,可以用它來傳輸數(shù)據(jù)內(nèi)容,例如網(wǎng)絡(luò)游戲中,玩家登錄操作,需要傳輸用戶名account和密碼password給服務(wù)器,服務(wù)器驗證成功,發(fā)送給玩家一條數(shù)據(jù)(如int a或者enum a),玩家收到數(shù)據(jù)后,依據(jù)a的值來判斷,a==1表示可以登錄,a==0表示密碼錯誤不可以登錄,這個過程中客戶端和服務(wù)器之間傳輸網(wǎng)絡(luò)數(shù)據(jù)用的就是Protobuf。

如果你沒有用過protobuf,下載demo,然后跟隨本文實踐一下,那么針對protobuf的簡單使用應(yīng)該是沒問題的;如果你一直在用protobuf,但是一直是別人寫好的,那么研究一下本文demo,可以讓你了解protobuf在unity3d中的使用搭建。

demo的github地址:single010203/Unity-Network-Protobuf

下載完成后,解壓得到如下圖1-圖2所示工程結(jié)構(gòu)圖:


Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析

圖1 networktest工程結(jié)構(gòu)圖

Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析

圖2 unity3d工程圖

工程實現(xiàn)了網(wǎng)絡(luò)游戲中,用戶登錄大廳到進入房間這么個過程,從用戶登錄->用戶進入大廳-->用戶進入房間,到用戶退出房間-->用戶退出大廳-->用戶退出,一共6個操作,代表了客戶端與服務(wù)器的6次消息傳輸。接下來,我們按照步驟把這個過程實踐出來。

1編寫.proto文件

打開圖1中所示protoToCs文件夾,在此文件夾中新建EnterLiveHallMsg.proto文件,并輸入如下圖3所示內(nèi)容:

EnterLiveHallReq代表用戶發(fā)送登錄請求數(shù)據(jù)結(jié)構(gòu);

EnterLiveHallEsp代表服務(wù)器返回的結(jié)果。

Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析

圖3 編寫.proto文件

文件夾中相關(guān)的proto文件都已經(jīng)編寫好了,當然你可以自定義隨意編寫幾個也沒問題。

2 生成.cs類

在protoToCs文件夾中找到批處理文件:protoToCs.bat,該工具調(diào)用protogen.exe工具,工具依據(jù)當前文件夾中的所有proto文件生成相應(yīng)的.cs類文件。

雙擊“protoToCs.bat”文件,彈出命令行工具,執(zhí)行完成后,剛才我們編寫的EnterLiveHallMsg.proto文件旁邊出現(xiàn)了EnterLiveHallMsg.cs文件,該文件是自動生成的,不可更改,這樣我們就完成了cs類的自動生成操作。

Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析

圖4 生成cs文件。

3 數(shù)據(jù)導(dǎo)入工程中

把剛才編寫的EnterLiveHallMsg.proto和自動生成的EnterLiveHallMsg.cs拷貝到工程中,如圖5所示。到這里我們就可以在工程中調(diào)用EnterLiveHallMsg.cs中的數(shù)據(jù)結(jié)構(gòu)進行功能編寫了。

Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析

圖5工程中網(wǎng)絡(luò)數(shù)據(jù)

4 如何使用生成的cs文件

該工程中功能層面最重要的三個類是SendPacket.cs/ReceivePacket.cs/StartLiveRoom.cs.

內(nèi)部邏輯功能比較簡單,僅僅實現(xiàn)了用戶登錄大廳,進入房間的一個客戶單示例。

Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析

圖6 登錄大廳操作

關(guān)于“Unity3d中網(wǎng)絡(luò)傳輸協(xié)議protobuf的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI