Version: 2017.4

NetworkWriter

class in UnityEngine.Networking

マニュアルに切り替える

説明

(バイト配列にデータをシリアライズするための)UNET の汎用的シリアライザー

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 out 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()); } } }

変数

Position内部バッファの現在位置

コンストラクタ

NetworkWriter新規に NetworkWriter オブジェクトを作成します。

Public 関数

AsArray内部で書き込みに使用されるバイト配列を返します。これはコピーではありません。
FinishMessageこれは、StartMessage() を呼び出してから設定したデータをヘッダーに入力して、Send 関数を使用して送信するために使用します。
SeekZero内部バッファの先頭に移動します。
StartMessageこれは新しいメッセージを開始します。payload として書き込んで FinishMessage() で完了させる必要があります。
ToArray書き込みに使用されるバイト配列は、使用するバイトのみコピーされ、内部でそのバイト配列を作成して返されます。
Writeオブジェクト、値、バッファ、ネットワークメッセージへの参照を NetworkIdentity コンポーネントと一緒にストリームに書き込みます。
WriteBytesAndSizeThis writes a 16-bit count and an array of bytes of that length to the stream.
WriteBytesFullこれは 16 ビットのバイト数とストリームから指定したサイズのバイト配列を書き込みます。
WritePackedUInt32これは可変長符号化を使用して 32 ビット値をストリームに書き込みます。
WritePackedUInt64これは可変長符号化を使用して 64 ビット値をストリームに書き込みます。