UdonSharpで同期を考える
オブジェクトの座標や回転を同期する
VRC Object Sync を使って同期できる
常時オブジェクトの座標・回転を参照して、スクリプト内で使うといったことができる
UdonSharp で宣言した値を同期する
[UdonSynced(UdonSyncMode.None)] を付けた変数は同期される
ただし変数の変更が伝播されるタイミングはよくわからん
UdonSharpBehavior 継承してるクラス全体に [UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] を付けてやる
変数変更した直後で RequestSerialization() を実行すれば、そのタイミングで他のクライアントに変更を通知できる
変数の変更を検出する(いくつか方法がありそう)
こんな感じで Setter に処理を書いてしまう
code:setter.cs
public bool isActive {
get => _isActive;
set {
_isActive = value;
ToggleObjects();
}
}
SendCustomNetworkEvent(VRC.Udon.Common.Interfaces.NetworkEventTarget.All, "FUNCTION_NAME") を使って、同期された変数を用いた処理を走らせてやる
OnDeserialization を使って、通信を受け取ったタイミングで処理を走らせる
ただ変数を変更していなくても結構な頻度で呼ばれるという話
これで確実に任意のタイミングで正しい処理が走ってくれるはず