Unity3D學習筆記(四)Unity的網絡基礎(C#)

一 網絡下載
可以使用WWW類下載資源
用法:以下載圖片爲例
WWW date = new WWW("<url>");
yield return date;
texture = date.texture;
注意函數的返回值類型爲IEnumerator,下載函數儘量使用StartCoroutine(function())協同程序。
對於本地資源,url爲"file://"+路徑,如果使用當前目錄,可以使用Application.dataPath
用這個方法同樣可以在線更新資源包。

二 創建本地服務器
網絡狀態可以通過NetworkpeerType的成員來獲取,狀態分爲四種,分別是:
NetworkPeerType.Disconnected 未開啓,在這裏編寫歡迎界面。
NetworkPeerType.Server 成功運行爲服務端,在這裏編寫服務器腳本。
NetworkPeerType.Client 成功運行爲客戶端
NetworkPeerType.Connecting 正在嘗試連接
一般使用switch來獲取狀態和處理事件。
在NetworkPeerType.Disconnected狀態下,可以使用Network.InitializeServer(maxconnect,Port,is_support_NAT);
第一個參數表示最大連接數,第二參數表示端口號,第三參數表示是否支持NAT(網絡地址轉換)方式連接
使用Network.Disconnected可以中斷連接。

三 創建客戶端
定義NetworkConnectionError類型的變量error接收Network的Connecte方法的返回值,如下:
NetworkConnectionError error = Network.Connect(IP, Port);
IP是服務器的地址

四 服務器響應
首先給服務器腳本所在組件(如主攝像機)添加Network View組件(在Miscellaneous類別內)。
網絡視圖組件用於系統使用RPC來接收網絡請求。

服務器部分:
聲明RPC接收函數的方法:
[RPC]
void RequestMessage(string message, NetworkMessageInfo info)
{
    //message是消息內容
    //info是附帶信息
    如info.sender是發送者的編號
}

客戶端部分:
消息的發送函數:
networkView.RPC("RPC function name", option, message);
其中RPC function即爲剛纔創建的RequestMessage函數。
option一共有四種
RPCMode.Server 向服務器發送
       .Others 向除發送者外發送
       .OthersBuffered
       .All 發送給所有人,包括自己
       .AllBuffered
注:加上Buffered的含義是將數據添加到緩衝區
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章