bytes | 受信したデータ |
numBytes | 受け取ったデータのサイズ |
channelId | データを受け取るチャンネル |
この仮想関数はアプリケーションに渡される前にカスタムのネットワーク接続クラスがネットワークからのデータを処理するのを許可します。
この関数のデフォルトの実装は受信したデータに HandleBytes() を呼び出します。カスタムの実装も HandleBytes() を使用できますが、受信したデータやその他のデータの改変されたバージョンを渡すことができます。
この例はコンソールに受信したデータを記録し、 HandleBytes に渡します。
using UnityEngine; using UnityEngine.Networking; using System; using System.Text;
public class DebugConnection : NetworkConnection { public override void TransportReceive(byte[] bytes, int numBytes, int channelId) { StringBuilder msg = new StringBuilder(); for (int i = 0; i < numBytes; i++) { var s = String.Format("{0:X2}", bytes[i]); msg.Append(s); if (i > 50) break; } UnityEngine.Debug.LogError("TransportReceive h:" + hostId + " con:" + connectionId + " bytes:" + numBytes + " " + msg);
HandleBytes(bytes, numBytes, channelId); } }
この関数の他の用途にはデータ圧縮やデータ暗号化があります。
カスタムネットワーク接続クラスは NetworkServer.NetworkConnectionClass と NetworkClient.NetworkConnectionClass を設定することにより使用されます。
using UnityEngine; using UnityEngine.Networking;
public class SpaceManager : NetworkManager { void Start() { NetworkServer.networkConnectionClass = typeof(DebugConnection); NetworkClient.networkConnectionClass = typeof(DebugConnection); } }