Class NetworkReader
General purpose serializer for UNET (for reading byte arrays).
This class works with NetworkWriter and is used for serializing data for UNet commands, RPC calls, events and low level messages.
using UnityEngine; using UnityEngine.Networking;
public class ExampleScript : MonoBehaviour { // Writing data to a NetworkWriter and then // Converting this to a NetworkReader. void Start() { // The data you add to your writer must be prefixed with a message type. // This is in the form of a short. short myMsgType = 143; NetworkWriter writer = new NetworkWriter(); // You start the message in your writer by passing in the message type. // This is a short meaning that it will take up 2 bytes at the start of // your message. writer.StartMessage(myMsgType); // You can now begin your message. In this case we will just use strings. writer.Write("Test data 1"); writer.Write("Test data 2"); writer.Write("Test data 3"); // Make sure to end your message with FinishMessage() writer.FinishMessage(); // You can now access the data in your writer. ToArray() returns a copy // of the bytes that the writer is using and AsArray() returns the // internal array of bytes, not a copy. byte[] writerData = writer.ToArray(); CreateNetworkReader(writerData); }
void CreateNetworkReader(byte[] data) { // We will create the NetworkReader using the data from our previous // NetworkWriter. NetworkReader networkReader = new NetworkReader(data); // The first two bytes in the buffer represent the size // of the message. This is equal to the NetworkReader.Length // minus the size of the prefix. byte[] readerMsgSizeData = networkReader.ReadBytes(2); short readerMsgSize = (short)((readerMsgSizeData[1] << 8) + readerMsgSizeData[0]); Debug.Log(readerMsgSize); // The message type added in NetworkWriter.StartMessage // is to be read now. It is a short and so consists of // two bytes. It is the second two bytes on the buffer. byte[] readerMsgTypeData = networkReader.ReadBytes(2); short readerMsgType = (short)((readerMsgTypeData[1] << 8) + readerMsgTypeData[0]); Debug.Log(readerMsgType); // If all of your data is of the same type (in this case the // data on our buffer is comprised of only strings) you can // read all the data from the buffer using a loop like so. while (networkReader.Position < networkReader.Length) { Debug.Log(networkReader.ReadString()); } } }
Inheritance
Inherited Members
Namespace: UnityEngine.Networking
Syntax
[Obsolete("The high level API classes are deprecated and will be removed in the future.")]
public class NetworkReader
Constructors
NetworkReader()
Creates a new NetworkReader object.
Declaration
public NetworkReader()
NetworkReader(Byte[])
Declaration
public NetworkReader(byte[] buffer)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte[] | buffer |
NetworkReader(NetworkWriter)
Creates a new NetworkReader object.
Declaration
public NetworkReader(NetworkWriter writer)
Parameters
| Type | Name | Description |
|---|---|---|
| NetworkWriter | writer | A buffer to construct the reader with, this buffer is NOT copied. |
Properties
Length
The current length of the buffer.
See NetworkReader for a code example.
Declaration
public int Length { get; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
Position
The current position within the buffer.
See NetworkReader for a code example.
Declaration
public uint Position { get; }
Property Value
| Type | Description |
|---|---|
| System.UInt32 |
Methods
ReadBoolean()
Reads a boolean from the stream.
Declaration
public bool ReadBoolean()
Returns
| Type | Description |
|---|---|
| System.Boolean | The value read. |
ReadByte()
Reads a byte from the stream.
Declaration
public byte ReadByte()
Returns
| Type | Description |
|---|---|
| System.Byte | The value read. |
ReadBytes(Int32)
Reads a number of bytes from the stream.
See NetworkReader for a code example.
Declaration
public byte[] ReadBytes(int count)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | count | Number of bytes to read. |
Returns
| Type | Description |
|---|---|
| System.Byte[] | Bytes read. (this is a copy). |
ReadBytesAndSize()
This read a 16-bit byte count and a array of bytes of that size from the stream.
The format used by this function is the same as NetworkWriter.WriteBytesAndSize().
Declaration
public byte[] ReadBytesAndSize()
Returns
| Type | Description |
|---|---|
| System.Byte[] | The bytes read from the stream. |
ReadChar()
Reads a char from the stream.
Declaration
public char ReadChar()
Returns
| Type | Description |
|---|---|
| System.Char | Value read. |
ReadColor()
Reads a unity Color objects.
Declaration
public Color ReadColor()
Returns
| Type | Description |
|---|---|
| Color | The color read from the stream. |
ReadColor32()
Reads a unity color32 objects.
Declaration
public Color32 ReadColor32()
Returns
| Type | Description |
|---|---|
| Color32 | The color read from the stream. |
ReadDecimal()
Reads a decimal from the stream.
Declaration
public decimal ReadDecimal()
Returns
| Type | Description |
|---|---|
| System.Decimal | Value read |
ReadDouble()
Reads a double from the stream.
Declaration
public double ReadDouble()
Returns
| Type | Description |
|---|---|
| System.Double | Value read |
ReadGameObject()
Reads a reference to a GameObject from the stream.
Declaration
public GameObject ReadGameObject()
Returns
| Type | Description |
|---|---|
| GameObject | The GameObject referenced. |
ReadInt16()
Reads a signed 16 bit integer from the stream.
Declaration
public short ReadInt16()
Returns
| Type | Description |
|---|---|
| System.Int16 | Value read |
ReadInt32()
Reads a signed 32bit integer from the stream.
Declaration
public int ReadInt32()
Returns
| Type | Description |
|---|---|
| System.Int32 | Value read |
ReadInt64()
Reads a signed 64 bit integer from the stream.
Declaration
public long ReadInt64()
Returns
| Type | Description |
|---|---|
| System.Int64 | Value read |
ReadMatrix4x4()
Reads a unity Matrix4x4 object.
Declaration
public Matrix4x4 ReadMatrix4x4()
Returns
| Type | Description |
|---|---|
| Matrix4x4 | The matrix read from the stream. |
ReadMessage<TMsg>()
This is a utility function to read a typed network message from the stream.
Declaration
public TMsg ReadMessage<TMsg>()where TMsg : MessageBase, new ()
Returns
| Type | Description |
|---|---|
| TMsg |
Type Parameters
| Name | Description |
|---|---|
| TMsg | The type of the Network Message, must be derived from MessageBase. |
ReadNetworkHash128()
Reads a NetworkHash128 assetId.
Declaration
public NetworkHash128 ReadNetworkHash128()
Returns
| Type | Description |
|---|---|
| NetworkHash128 | The assetId object read from the stream. |
ReadNetworkId()
Reads a NetworkInstanceId from the stream.
Declaration
public NetworkInstanceId ReadNetworkId()
Returns
| Type | Description |
|---|---|
| NetworkInstanceId | The NetworkInstanceId read. |
ReadNetworkIdentity()
Reads a reference to a NetworkIdentity from the stream.
Declaration
public NetworkIdentity ReadNetworkIdentity()
Returns
| Type | Description |
|---|---|
| NetworkIdentity | The NetworkIdentity object read. |
ReadPackedUInt32()
Reads a 32-bit variable-length-encoded value.
Declaration
public uint ReadPackedUInt32()
Returns
| Type | Description |
|---|---|
| System.UInt32 | The 32 bit value read. |
ReadPackedUInt64()
Reads a 64-bit variable-length-encoded value.
Declaration
public ulong ReadPackedUInt64()
Returns
| Type | Description |
|---|---|
| System.UInt64 | The 64 bit value read. |
ReadPlane()
Reads a unity Plane object.
Declaration
public Plane ReadPlane()
Returns
| Type | Description |
|---|---|
| Plane | The plane read from the stream. |
ReadQuaternion()
Reads a Unity Quaternion object.
Declaration
public Quaternion ReadQuaternion()
Returns
| Type | Description |
|---|---|
| Quaternion | The quaternion read from the stream. |
ReadRay()
Reads a Unity Ray object.
Declaration
public Ray ReadRay()
Returns
| Type | Description |
|---|---|
| Ray | The ray read from the stream. |
ReadRect()
Reads a Unity Rect object.
Declaration
public Rect ReadRect()
Returns
| Type | Description |
|---|---|
| Rect | The rect read from the stream. |
ReadSByte()
Reads a signed byte from the stream.
Declaration
public sbyte ReadSByte()
Returns
| Type | Description |
|---|---|
| System.SByte | Value read |
ReadSceneId()
Reads a NetworkSceneId from the stream.
Declaration
public NetworkSceneId ReadSceneId()
Returns
| Type | Description |
|---|---|
| NetworkSceneId | The NetworkSceneId read. |
ReadSingle()
Reads a float from the stream.
Declaration
public float ReadSingle()
Returns
| Type | Description |
|---|---|
| System.Single | Value read |
ReadString()
Reads a string from the stream. (max of 32k bytes).
See NetworkReader for a code example.
Declaration
public string ReadString()
Returns
| Type | Description |
|---|---|
| System.String | Value read. |
ReadTransform()
Reads a reference to a Transform from the stream.
The game object of this Transform must have a NetworkIdentity.
Declaration
public Transform ReadTransform()
Returns
| Type | Description |
|---|---|
| Transform | The transform object read. |
ReadUInt16()
Reads an unsigned 16 bit integer from the stream.
Declaration
public ushort ReadUInt16()
Returns
| Type | Description |
|---|---|
| System.UInt16 | Value read |
ReadUInt32()
Reads an unsigned 32 bit integer from the stream.
Declaration
public uint ReadUInt32()
Returns
| Type | Description |
|---|---|
| System.UInt32 | Value read |
ReadUInt64()
Reads an unsigned 64 bit integer from the stream.
Declaration
public ulong ReadUInt64()
Returns
| Type | Description |
|---|---|
| System.UInt64 | Value read |
ReadVector2()
Reads a Unity Vector2 object.
Declaration
public Vector2 ReadVector2()
Returns
| Type | Description |
|---|---|
| Vector2 | The vector read from the stream. |
ReadVector3()
Reads a Unity Vector3 objects.
Declaration
public Vector3 ReadVector3()
Returns
| Type | Description |
|---|---|
| Vector3 | The vector read from the stream. |
ReadVector4()
Reads a Unity Vector4 object.
Declaration
public Vector4 ReadVector4()
Returns
| Type | Description |
|---|---|
| Vector4 | The vector read from the stream |
SeekZero()
Sets the current position of the reader's stream to the start of the stream.
Declaration
public void SeekZero()
ToString()
Returns a string representation of the reader's buffer.
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| System.String | Buffer contents. |