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

TSMPNetworkBehaviour

名前空間: K13A.TSMP.Udon

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

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

フィールド

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

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

受信補間モード

価値意味
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);
}