ネットワークのメッセージクラスはこのクラスを継承している必要があります。これらのメッセージクラスは NetworkConnection の さまざまな Send 関数で送信するために使用されています。
MessageBase を継承したクラスの public フィールドのデータはクラスが自動的にシリアライズします。virtual メソッドの Serialize と Deserialize は開発者が正確にシリアライズ/デシリアライズを実装したいときに使用します。これらのメソッドが実装されていない場合、自動的に生成されます。
Note : Unity uses its own network serialization system. It doesn't support the [NonSerialized] attribute. Instead, use private variables.
以下の例では、メソッドが実装されていますが、メソッドを実装しない場合でも使用できます。
using UnityEngine; using UnityEngine.Networking;
class SpawnMessage : MessageBase { public uint netId; public NetworkHash128 assetId; public Vector3 position; public byte[] payload;
// This method would be generated public override void Deserialize(NetworkReader reader) { netId = reader.ReadPackedUInt32(); assetId = reader.ReadNetworkHash128(); position = reader.ReadVector3(); payload = reader.ReadBytesAndSize(); }
// This method would be generated public override void Serialize(NetworkWriter writer) { writer.WritePackedUInt32(netId); writer.Write(assetId); writer.Write(position); writer.WriteBytesFull(payload); } }
Deserialize | このメソッドは、NetworkReader のストリームからメッセージオブジェクトにデータを投入するために使用します。 |
Serialize | このメソッドは、メッセージオブジェクトから NetworkWriter のストリームに書き込むために使用します。 |