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的含義是將數據添加到緩沖區
轉載于:https://www.cnblogs.com/aiwz/p/6154275.html
總結
以上是生活随笔為你收集整理的Unity3D学习笔记(四)Unity的网络基础(C#)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS开发-项目的完整重命名方法,图文教
- 下一篇: UVa 1393 (容斥原理、GCD)