Version: 2017.3

MessageBase

class in UnityEngine.Networking

切换到手册

描述

应该从此类派生网络消息类。然后,可以使用 NetworkConnection、NetworkClient 和 NetworkServer 的各种 Send 函数发送这些消息类。

派生自 MessageBase 的类的公共数据字段将自动通过该类实现序列化。开发者可以实现 Serialize 和 Deserialize 虚拟方法以进行精确控制,但如果这些方法没有实现,则系统会为它们生成实现。

注意:Unity 使用自己的网络序列化系统。该系统不支持 [NonSerialized] 属性,而是使用私有变量。

在以下示例中,上述方法已实现,但如果这些方法没有实现,消息仍然可用。

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