中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Unity3d中網絡傳輸協議protobuf的示例分析

發布時間:2021-12-16 13:57:19 來源:億速云 閱讀:686 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關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所示工程結構圖:


Unity3d中網絡傳輸協議protobuf的示例分析

圖1 networktest工程結構圖

Unity3d中網絡傳輸協議protobuf的示例分析

圖2 unity3d工程圖

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

1編寫.proto文件

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

EnterLiveHallReq代表用戶發送登錄請求數據結構;

EnterLiveHallEsp代表服務器返回的結果。

Unity3d中網絡傳輸協議protobuf的示例分析

圖3 編寫.proto文件

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

2 生成.cs類

在protoToCs文件夾中找到批處理文件:protoToCs.bat,該工具調用protogen.exe工具,工具依據當前文件夾中的所有proto文件生成相應的.cs類文件。

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

Unity3d中網絡傳輸協議protobuf的示例分析

圖4 生成cs文件。

3 數據導入工程中

把剛才編寫的EnterLiveHallMsg.proto和自動生成的EnterLiveHallMsg.cs拷貝到工程中,如圖5所示。到這里我們就可以在工程中調用EnterLiveHallMsg.cs中的數據結構進行功能編寫了。

Unity3d中網絡傳輸協議protobuf的示例分析

圖5工程中網絡數據

4 如何使用生成的cs文件

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

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

Unity3d中網絡傳輸協議protobuf的示例分析

圖6 登錄大廳操作

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

十堰市| 定西市| 曲阜市| 日照市| 南和县| 嵊州市| 定边县| 图木舒克市| 开阳县| 肇东市| 舒城县| 扶沟县| 资阳市| 广昌县| 乌鲁木齐县| 巫溪县| 文登市| 宁阳县| 腾冲县| 长岭县| 门头沟区| 莎车县| 视频| 上蔡县| 金秀| 岫岩| 乐亭县| 江山市| 江陵县| 卢氏县| 常宁市| 广丰县| 东山县| 望奎县| 太谷县| 吴桥县| 桃园市| 伊通| 邻水| 大田县| 巩留县|