您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Unity3d中網絡傳輸協議protobuf的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Google Protocol Buffer( 簡稱 Protobuf) 是 Google 公司內部的混合語言數據標準,目前已經正在使用的有超過 48,162 種報文格式定義和超過 12,183 個 .proto 文件。他們用于 RPC 系統和持續數據存儲系統。
Protocol Buffers 是一種輕便高效的結構化數據存儲格式,可以用于結構化數據串行化,或者說序列化。它很適合做數據存儲或 RPC 數據交換格式。可用于通訊協議、數據存儲等領域的語言無關、平臺無關、可擴展的序列化結構數據格式。目前提供了 C++、Java、Python 三種語言的 API。
google protocol buffers的應用范圍非常廣泛,但對于unity3d開發者來說,protobuf的最大用處在于編寫網絡游戲時,可以用它來傳輸數據內容,例如網絡游戲中,玩家登錄操作,需要傳輸用戶名account和密碼password給服務器,服務器驗證成功,發送給玩家一條數據(如int a或者enum a),玩家收到數據后,依據a的值來判斷,a==1表示可以登錄,a==0表示密碼錯誤不可以登錄,這個過程中客戶端和服務器之間傳輸網絡數據用的就是Protobuf。
如果你沒有用過protobuf,下載demo,然后跟隨本文實踐一下,那么針對protobuf的簡單使用應該是沒問題的;如果你一直在用protobuf,但是一直是別人寫好的,那么研究一下本文demo,可以讓你了解protobuf在unity3d中的使用搭建。
demo的github地址:single010203/Unity-Network-Protobuf
下載完成后,解壓得到如下圖1-圖2所示工程結構圖:
工程實現了網絡游戲中,用戶登錄大廳到進入房間這么個過程,從用戶登錄->用戶進入大廳-->用戶進入房間,到用戶退出房間-->用戶退出大廳-->用戶退出,一共6個操作,代表了客戶端與服務器的6次消息傳輸。接下來,我們按照步驟把這個過程實踐出來。
1編寫.proto文件
打開圖1中所示protoToCs文件夾,在此文件夾中新建EnterLiveHallMsg.proto文件,并輸入如下圖3所示內容:
EnterLiveHallReq代表用戶發送登錄請求數據結構;
EnterLiveHallEsp代表服務器返回的結果。
文件夾中相關的proto文件都已經編寫好了,當然你可以自定義隨意編寫幾個也沒問題。
2 生成.cs類
在protoToCs文件夾中找到批處理文件:protoToCs.bat,該工具調用protogen.exe工具,工具依據當前文件夾中的所有proto文件生成相應的.cs類文件。
雙擊“protoToCs.bat”文件,彈出命令行工具,執行完成后,剛才我們編寫的EnterLiveHallMsg.proto文件旁邊出現了EnterLiveHallMsg.cs文件,該文件是自動生成的,不可更改,這樣我們就完成了cs類的自動生成操作。
3 數據導入工程中
把剛才編寫的EnterLiveHallMsg.proto和自動生成的EnterLiveHallMsg.cs拷貝到工程中,如圖5所示。到這里我們就可以在工程中調用EnterLiveHallMsg.cs中的數據結構進行功能編寫了。
4 如何使用生成的cs文件
該工程中功能層面最重要的三個類是SendPacket.cs/ReceivePacket.cs/StartLiveRoom.cs.
內部邏輯功能比較簡單,僅僅實現了用戶登錄大廳,進入房間的一個客戶單示例。
關于“Unity3d中網絡傳輸協議protobuf的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。