メインコンテンツまでスキップ

開発者の概要

このセクションは、TSMP を拡張する開発者を対象としています。

プレハブの配置、組み込みコンポーネントの同期、またはシーンのデバッグのみが必要な場合は、「はじめに」から始めてください。 TSMP に対してコードを記述する必要がある場合は、このセクションを使用してください。

拡張できるもの​

拡大こんなときに使いますここから始めましょう
カスタム同期コンポーネント組み込みの同期コンポーネントはデータをカバーしません。カスタムネットワーク動作
フィールド同期パブリックフィールドをエンコードするには TSMP が必要です。スクリプト API: TransSync
TSMP RPC イベントテクスチャ ストリームを介した遅延イベント配信が必要です。スクリプト API: TSMPNetworkBehaviour
コーデックパッケージ別のバイトからピクセルへの表現が必要です。カスタムコーデック
コーデックシェーダ専用のエンコード/デコード シェーダ ロジックが必要です。コーデック実装ガイド
プロトコルツールテスト、バリデータ、またはデバッグ ツールが必要です。フレームアルゴリズム

メンバーレベルの API の詳細については、別の スクリプト API セクションを参照してください。

詳細なパス​

ゴール読む
同期変数を追加するカスタム ネットワーク変数
遅延テクスチャ ストリーム イベントを追加するカスタム ネットワーク RPC
高密度のデータを 1 つのフィールドに詰め込むカスタムパックデータ
コーデック パッケージをビルドするコーデックパッケージ定義
コーデック シェーダ パスの書き込みコーデック シェーダ
バイトリカバリとランタイムサポートを検証するコーデックの検証

互換性の目標​

TSMP コードは、次の 2 つの環境で実行されるように記述されています。

  • Unity C# およびエディター ランタイム。
  • UdonSharp コンパイル済みランタイム。

通常、同じコンポーネントが両方の環境で動作するはずです。 UdonSharp がコンパイルできない API は避け、リフレクションの多いランタイム ロジックよりも単純なフィールド、配列、明示的なメソッドを優先します。

拡張機能の設計ルール​

  • シーンに面したコンポーネントを明示的に保ち、検査しやすくします。
  • [TransSync] フィールドは副作用ではなくデータに使用します。
  • Udon ブリッジのコストを削減するために、高周波の値を byte[] にパックします。
  • シーン構造の変更後に TSMPSetup がバインディングを再構築できるようにします。
  • コア コードまたはエンコーダー コードにオプションのコーデック パッケージをハードコーディングしないでください。
  • カスタム コーデックを TSMPCodec API の背後に保持します。
  • テクスチャ パスを信頼できないものとして扱い、デバッグ カウンターで検証します。

名前空間のレイアウト​

名前空間目的
K13A.TSMPコア ランタイム、プロトコル、エンコーダー、デコーダー、コーデック ベース タイプ、セットアップ、デバッグ ユーティリティ。
K13A.TSMP.Udonネットワーク動作の基本タイプと組み込みの TSMP ネットワーク コンポーネント。

Unity 側のコンポーネント名には TSMP プレフィックスが保持されます。内部ヘルパー型はそうではない場合があります。

推奨される開発ループ​

  1. 最小のコンポーネントまたはコーデック パスを実装します。
  2. Apply Setup を実行します。
  3. TSMPDebugCanvas でペイロードのバイト数とメッセージ数を確認します。
  4. Unity Play モードをテストします。
  5. UdonSharp をコンパイルします。
  6. 機能が Udon またはキャプチャの動作に依存する場合は、実際の VRChat ランタイム パスでテストします。