手動同期の値を変更する権限はオーナーになっているユーザーのみです。そのため、オーナー以外が値を変更するには、オーナーを譲与する方法で全ユーザーが値を変更できるようにします。
Udonスクリプト作成
サンプルのButtonSyncBecomeOwnerをU#に書き直し
Udon Graph
スクリプトがデカいので重要な箇所だけ画像として貼り付けます。
説明するとNetworking.SetOwnerメソッドでオブジェクトの所有権を譲ってもらうようにオーナーにお願いしているスクリプトとなります。オーナーは所有権の変更を許可(true)することで権限の受け渡しが完了します。
U#
public class ButtonSyncBecomeOwnerBySharp : UdonSharpBehaviour
{
public Text uiText;
[UdonSynced]
private int clickCount = 0;
public void OnClick()
{
Networking.SetOwner(Networking.LocalPlayer, gameObject); // オブジェクトの所有権を貰えないか尋ねる
clickCount++;
RequestSerialization();
}
public override void OnDeserialization()
{
uiText.text = clickCount.ToString();
}
}
シーン作成
他の手動同期に関する記事と同じなので省略します。
手動同期をオーナーが譲与される方法で作成する