主題

【Unity / Photon】 Photon上傳資料的3種做法 RPC / CustomProperty / RaiseEvent

%%鼠 | 2021-07-21 01:55:18 | 巴幣 214 | 人氣 180

前言:
整理舊文
程式碼可以去完整筆記摳。


需求:
之前做的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 適用於:

  1. 低更新頻率的資料。
  2. 礙於傳輸資料長度,常將一個字母簡化成2個英文字,即訊息別傳太多。
  3. 範例: 切換武器、凸顯某物品、倒數計時

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個。




後記:
最近打的東西是不是有點硬,比較少人想看

創作回應

蝦米蟲
恩只看得懂一點點,沒學過photon,剛好最近想學photon,但不知道如何起手,有推薦的學習資源嗎大大
2021-07-21 10:21:59
%%鼠
我覺得直接實作,看完這系列基本的都會了,接下來就是多做專案去熟悉他的道理https://www.youtube.com/watch?v=zPZK7C5_BQo&list=PLhsVv9Uw1WzjI8fEBjBQpTyXNZ6Yp1ZLw
2021-07-21 10:24:29
蝦米蟲
感謝大大的分享,我試試看
2021-07-21 10:27:01
%%鼠
[補充]Raise Event雖然可以選擇向所有人發送,但發送者本身不會接收與觸發接收事件哦!
2021-07-21 16:26:32
追蹤 創作集

作者相關創作

相關創作

更多創作