日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

【Unity3D

 郭恩 2018-08-03

主要分為四部分:

一、套接字管理器(SocketManager.cs)

1)、連接



2)、斷開


3)、接收(線程)


4)、發(fā)送(攜程)

1.發(fā)送消息基本方法

2.二進制方式發(fā)送

        

3.protobuf方式發(fā)送

        


二、消息中心:(MessageCenter.cs)

1)、游戲邏輯事件
a.事件緩存:
1.事件類型對應的數(shù)據(jù)緩存隊列:_gameLogicDataQueue
2.事件類型對應的執(zhí)行函數(shù):_gameLogic_EventList
b.相關(guān)函數(shù):
1.添加事件監(jiān)聽:AddEventListener(eGameLogicEventType _eventType, Callback_GameLogic_Handle _callback)2.移除事件監(jiān)聽:RemoveEventListener(eGameLogicEventType _eventType, Callback_GameLogic_Handle _callback)
3.推送、觸發(fā)事件:PostEvent(eGameLogicEventType _eventType, object data = null)

2)、網(wǎng)絡數(shù)據(jù)事件(線程)
a.事件緩存:
1.事件類型對應的數(shù)據(jù)緩存隊列:_netMessageDataQueue
2.事件類型對應的執(zhí)行函數(shù):_netMessage_EventList
b.相關(guān)函數(shù):
1.添加事件監(jiān)聽:addObsever(eProtocalType _protocalType, Callback_NetMessage_Handle _callback)
2.移除事件監(jiān)聽:removeObserver(eProtocalType _protocalType, Callback_NetMessage_Handle _callback)
3)、運行流程
a.創(chuàng)建單例:MessageCenter.Instance
b.循環(huán)檢測:

三、數(shù)據(jù)封裝:

1)、網(wǎng)絡數(shù)據(jù)緩沖器(DataBuff.cs)自動Size

a.參數(shù)定義:



2.添加數(shù)據(jù)到緩存中


3.從緩存中取出一條完整數(shù)據(jù)


2)、二進制字節(jié)流(ByteStreamBuff.cs)
在和服務器做數(shù)據(jù)交互的時候,最終要把數(shù)據(jù)轉(zhuǎn)化成byte[],傳給服務器。
如:

要將這些數(shù)據(jù)傳給服務器,怎么變成byte[]數(shù)組呢?這里就要做一個數(shù)據(jù)封裝。所有數(shù)據(jù)都是可以變成byte或byte[]來表示,要做的其實就是把這些數(shù)據(jù)拼成一個byte[]。

一般都是,順序存,順序取。

如:
寫入:

讀取:


這里已經(jīng)對SendMsg做的重載,故直接傳入,ByteStreamBuff或者,protobuf數(shù)據(jù)即可,SocketManager在發(fā)送前會轉(zhuǎn)換為Byte[],再發(fā)送出去。

很多對數(shù)據(jù)的二進制封裝的方法都是用byte[] 來做緩存媒介,所以在沒事new 的時候,都要先給這個數(shù)據(jù)封裝器,定一個大小,為了省事,所以這里用Stream作用緩存媒介。還有就是在封裝器中有一個flip()函數(shù),這里要再說一下,就是系統(tǒng)的大小端問題,如果前端是大端系統(tǒng),后端是小端系統(tǒng)在數(shù)據(jù)交互的時候就會出問題了。細節(jié)就不解釋了,百度(系統(tǒng)大小端)就可以了,不難理解的。

3)、谷歌ProtoBuffer序列化

a.現(xiàn)在手游這個用的很火。方便快捷,壓縮效率也要。主要就是兩個函數(shù),序列化,反序列化。這個兩方法封閉在SocketManager.cs中。

b.序列化


c.反序列化



四、簡單流程圖


五、總結(jié)
1.框架中只有接收數(shù)據(jù)的時候是在線程中,有高人建議我把發(fā)送數(shù)據(jù)也放到線程中,這個回頭我再試試。
2.流程還算是比較清晰,如果有不明白的地方,可留言?;颍≦Q:8321884)
3.建議讀者多看幾遍流程書。好理解。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多