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

TSMPNetworkBehaviour

名前空間: K13A.TSMP.Udon

TSMP 同期動作の基本タイプ。

コンポーネントが TSMP メッセージ ルーティングに参加する必要がある場合にこれを使用します。ネットワーク ID、受信補間ポリシー、ライフサイクル フック、および SendTransRPC を提供します。

フィールド​

分野タイプ使用
networkIdushortペイロード メッセージをこの動作にルーティングします。
sendModeSendMode自動フィールドの変更検出をコンポーネント単位で上書きします。既定値は Default です。
receiveInterpolationReceiveInterpolationModeコントロールは動作を受け取ります。
continuousInterpolationRatefloat連続受信モードの平滑化率。
transRpcEncoderTSMPEncoderSendTransRPC によって使用されるエンコーダー。セットアップによって割り当てられます。
lastVariableHashuint最後に受信した変数のハッシュ。
lastRpcHashuint最後に受信した RPC ハッシュ。
lastRpcNetworkIdushort最後に受信した RPC のネットワーク ID。
lastRpcArgumentCountint最後に受信した RPC の引数の数。
lastRpcMethodNamestring最後に受信した RPC のメソッド名。

通常のシーンでは transRpcEncoder を手動で割り当てないでください。 TSMPSetup に割り当ててください。

SendMode​

名前空間: K13A.TSMP.Udon。インスペクター上の表示: Send Mode。

値数値実際に適用する SendOnChange
Default0各フィールドの属性設定を使用します。
OnChange1このコンポーネントの全自動フィールドに true を適用します。
Always2このコンポーネントの全自動フィールドに false を適用します。
sendMode = SendMode.Always;

エンコード時に値を読むため、バインディングの再生成は不要です。既存のスナップショットと出力成功時刻を維持するので、モードの切り替えで MinSendInterval を回避することはありません。未知の enum 値は Default として扱います。このフィールドがない既存のシーンやプレハブも Default を使用します。

属性メタデータ、優先度、送受信方向、キャプチャ処理、RPC、手動 Writer 呼び出しは変更しません。OnChange でもエンコーダーの定期再送が適用され、Always も最小間隔と容量制限に従います。使用例は Send Mode を参照してください。

受信補間モード​

価値意味
None受信した値を無視します。
Discrete受け取った値を直接適用します。
Continuousターゲットを保存し、サポートされている場合は補間します。

Continuous の使用方法は組み込みコンポーネントによって決まります。カスタム コンポーネントは、受信したデータを適用する前に receiveInterpolation をチェックする必要があります。

ライフサイクルメソッド​

方法いつ呼び出されるか
TSMPBeforeEncode()エンコーダーが [TransSync] フィールドを読み取る前。
OnTSMPVariableReceived()デコーダが同期フィールドを適用した後。
OnTSMPVariableChanged(uint variableHash)基本受信ハンドラーから。
OnTSMPRpcReceived()デコーダが TSMP RPC をディスパッチした後。
OnTSMPRpc(uint rpcHash)基本 RPC 受信ハンドラーから。

典型的なカスタム コンポーネント フロー:

public override void TSMPBeforeEncode()
{
packedBytes = BuildPacket();
}

public override void OnTSMPVariableReceived()
{
if (receiveInterpolation == ReceiveInterpolationMode.None)
return;

ApplyPacket(packedBytes);
OnTSMPVariableChanged(lastVariableHash);
}

ユーティリティメソッド​

方法使用
IsTSMPActive()有効かつ階層内でアクティブな状態を返します。
GetReceiveInterpolationStep()クランプされた 0..1 補間ステップを返します。
SendTransRPC(string methodName, RPCTarget target)TSMP を通じて RPC イベントをキューに入れます。

RPCターゲット​

価値行動
Localローカルのみで実行します。
Remote受信者専用のキュー。
Allローカルで実行し、受信者を待ちます。

SendTransRPC はメソッド名をハッシュし、割り当てられたエンコーダーを通じてキューに入れます。受信側はデコード後メソッド名でディスパッチします。

RPC の例​

public override void Interact()
{
SendTransRPC(nameof(ToggleObject), RPCTarget.All);
}

public void ToggleObject()
{
target.SetActive(!target.activeSelf);
}