開発者の概要
このセクションは、TSMP を拡張する開発者を対象としています。
プレハブの配置、組み込みコンポーネントの同期、またはシーンのデバッグのみが必要な場合は、「はじめに」から始めてください。 TSMP に対してコードを記述する必要がある場合は、このセクションを使用してください。
拡張できるもの
| 拡大 | こんなときに使います | ここから始めましょう |
|---|---|---|
| カスタム同期コンポーネント | 組み込みの同期コンポーネントはデータをカバーしません。 | カスタムネットワーク動作 |
| フィールド同期 | パブリックフィールドをエンコードするには TSMP が必要です。 | スクリプト API: TransSync |
| TSMP RPC イベント | テクスチャ ストリームを介した遅延イベント配信が必要です。 | スクリプト API: TSMPNetworkBehaviour |
| コーデックパッケージ | 別のバイトからピクセルへの表現が必要です。 | カスタムコーデック |
| コーデックシェーダ | 専用のエンコード/デコード シェーダ ロジックが必要です。 | コーデック実装ガイド |
| プロトコルツール | テスト、バリデータ、またはデバッグ ツールが必要です。 | フレームアルゴリズム |
メンバーレベルの API の詳細については、別の スクリプト API セクションを参照してください。
詳細なパス
| ゴール | 読む |
|---|---|
| 同期変数を追加する | カスタム ネットワーク変数 |
| 遅延テクスチャ ストリーム イベントを追加する | カスタム ネットワーク RPC |
| 高密度のデータを 1 つのフィールドに詰め込む | カスタムパックデータ |
| コーデック パッケージをビルドする | コーデックパッケージ定義 |
| コーデック シェーダ パスの書き込み | コーデック シェーダ |
| バイトリカバリとランタイムサポートを検証する | コーデックの検証 |
互換性の目標
TSMP コードは、次の 2 つの環境で実行されるように記述されています。
- Unity C# およびエディター ランタイム。
- UdonSharp コンパイル済みランタイム。
通常、同じコンポーネントが両方の環境で動作するはずです。 UdonSharp がコンパイルできない API は避け、リフレクションの多いランタイム ロジックよりも単純なフィールド、配列、明示的なメソッドを優先します。
拡張機能の設計ルール
- シーンに面したコンポーネントを明示的に保ち、検査しやすくします。
[TransSync]フィールドは副作用ではなくデータに使用します。- Udon ブリッジのコストを削減するために、高周波の値を
byte[]にパックします。 - シーン構造の変更後に
TSMPSetupがバインディングを再構築できるようにします。 - コア コードまたはエンコーダー コードにオプションのコーデック パッケージをハードコーディングしないでください。
- カスタム コーデックを
TSMPCodecAPI の背後に保持します。 - テクスチャ パスを信頼できないものとして扱い、デバッグ カウンターで検証します。
名前空間のレイアウト
| 名前空間 | 目的 |
|---|---|
K13A.TSMP | コア ランタイム、プロトコル、エンコーダー、デコーダー、コーデック ベース タイプ、セットアップ、デバッグ ユーティリティ。 |
K13A.TSMP.Udon | ネットワーク動作の基本タイプと組み込みの TSMP ネットワーク コンポーネント。 |
Unity 側のコンポーネント名には TSMP プレフィックスが保持されます。内部ヘルパー型はそうではない場合があります。
推奨される開発ループ
- 最小のコンポーネントまたはコーデック パスを実装します。
Apply Setupを実行します。TSMPDebugCanvasでペイロードのバイト数とメッセージ数を確認します。- Unity Play モードをテストします。
- UdonSharp をコンパイルします。
- 機能が Udon またはキャプチャの動作に依存する場合は、実際の VRChat ランタイム パスでテストします。