前言:
需求:
之前做的TileMap系統讓玩家可以自訂地圖,在組隊時房主能選擇自己做的地圖給大家一起玩。房主選擇地圖時,其他人也要一起接收並預覽。
Photon 傳遞資料有三種方式: RPC、CustomProperty (又分room和player的)、RaiseEvent
必要:要傳輸的資料請轉成ByteArray類型
傳輸自定義的類型可能會出現這段error:
Exception: Write failed. Custom type not found: MapData
ExitGames.Client.Photon.Protocol18.WriteCustomType
MapData是我的自訂類型。
轉法:
1.CustomProperty
有分Room的CustomProperty跟Player的CustomProperty,用法雷同。
一個地圖檔案約6~30KB,不確定Photon CustomProperty的大小限制,但這大小是無法上傳的。舊文說過CustomProperty 適用於:
- 低更新頻率的資料。
- 礙於傳輸資料長度,常將一個字母簡化成2個英文字,即訊息別傳太多。
- 範例: 切換武器、凸顯某物品、倒數計時
2.RPC:
《在分散式計算,遠端程序呼叫(英語:Remote Procedure Call,縮寫為 RPC)是一個電腦通信協定。該協定允許執行於一臺電腦的程式呼叫另一個位址空間(通常為一個開放網路的一臺電腦)的子程式,而程式設計師就像呼叫本地程式一樣,無需額外地為這個互動作用編程(無需關注細節)。RPC是一種伺服器-客戶端(Client/Server)模式,經典實現是一個通過傳送請求-接受回應進行資訊互動的系統。》(源)
簡單說就是傳個訊號,叫別臺電腦執行指定的方法。
範例:
結果: OK
但RPC有個缺點,他需要掛載PhotonView,由該view發送RPC。
雖然在Manager上掛載PhotonView就行。
3.Raise Event:官網的語法大概是舊的吧,打出來都是error。
新的:
範例:
呼叫Event不需要PhotonView。
缺點是Event code範圍0~255,扣除前幾個要保留給系統的,我們可以用的實際數量小於256個。
後記:
最近打的東西是不是有點硬,比較少人想看