手動同期の値を変更する権限はオーナーになっているユーザーのみです。そのため、オーナー以外が値を変更するには、オーナーを譲与する方法で全ユーザーが値を変更できるようにします。

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();
    }
}

シーン作成

他の手動同期に関する記事と同じなので省略します。

手動同期をオーナーが譲与される方法で作成する

投稿ナビゲーション


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)