シリアライゼーション

データをバイト列にも JSON にも詰められます。どちらも Udon がすでに持っている仕組みの上に乗っているだけで、作り直したものではありません。

更新日 2026-09-11

無関係な二つの詰め方を、どちらも作り直しではなく薄いラッパーとして。バイト列には ByteWriter/ByteReader、テキストには Json

using Udonite.Serialization;

byte[] payload = new ByteWriter().WriteInt32(7).WriteString("hi").ToArray();

string json = Json.Serialize(dictionaryOrIJsonSerializable);

バイト列を扱うのは、Udon に自前のシリアライザーがないからです。 ByteWriter/ByteReader は Udon のネットワーク層がそのまま扱える型だけを対象にしています——32 ビット以下のスカラー、stringbyte[]Vector2Vector3QuaternionSystem.BitConverter をそのまま写したものではなく、意図的に絞った核だけです。reached なクラスは丸ごとコンパイルされ、宣言したメソッドはプログラムが生きている間ずっとヒープを食うので、ここにあるのはペイロードが実際に運びそうなものだけです。

JSON を扱うのは、Udon にすでにそれがあるからです。 Json は Udon 自身のパーサーである VRCJson をラップしているだけで、二つ目のパーサーを作ってはいません。呼び出す側のほとんどから VRChat の内部の仕組みである DataToken を隠します。型は IJsonSerializable を実装することで参加し、あとは Json.Serialize<T>/Deserialize<T> がやってくれます。

何が入っているか

用途
ByteWriter, ByteReader byte[] への詰め込み——メッセージのペイロード、保存フォーマット、形を自分で決められるもの全般
Json, IJsonSerializable JSON テキストへの詰め込み——外部 API や、人が手で編集するファイルなど、JSON でなければならないもの

次に読むもの

はじめかた では値をバイト列に、型を JSON に詰めてみます。

リファレンス は両方のメンバー一覧です。

問題が発生しました 再読み込み