ネットワークのメッセージクラスはこのクラスを継承している必要があります。これらのメッセージクラスは NetworkConnection の さまざまな Send 関数で送信するために使用されています。
MessageBase を継承したクラスの public フィールドのデータはクラスが自動的にシリアライズします。virtual メソッドの Serialize と Deserialize は開発者が正確にシリアライズ/デシリアライズを実装したい時に使用します。これらのメソッドが実装されていない場合、自動的に生成されます。
以下の例では、メソッドが実装されていますが、メソッドを実装しない場合でも使用できます。
#pragma strict class SpawnMessage extends MessageBase { public var netId; public var assetId; public var position; public var payload; // This method would be generated public override function Deserialize(reader) { netId = reader.ReadPackedUInt32(); assetId = reader.ReadNetworkHash128(); position = reader.ReadVector3(); payload = reader.ReadBytesAndSize(); } // This method would be generated public override function Serialize(writer) { writer.WritePackedUInt32(netId); writer.Write(assetId); writer.Write(position); writer.WriteBytesFull(payload); } }
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 のストリームに書き込むために使用します。 |