仮想と物理とエトセトラ

xRや物理とかごった煮の備忘録的技術ブログ

Photon(PUN2)で関数実行を共有する

Photonの続きです。

xr-physics-work-etc.hatenablog.com

今回は関数の実行を複数ユーザで共有します。
例として、ボタンを押すことでカウントアップするカウンタを作成します。

1. ボタンを用意する

MRTK Toolboxから任意のボタンを用意します。
今回は「PressableButtonHoloLens2_64x64」を使用しました。
ボタンにあらかじめ存在するアイコンは不要なため、「PressableButtonHoloLens2_64x64」にアタッチされているButton Config HelperIcon StyleNoneにし、非表示にしています。
また、カウンタの数値がわかりやすいように、IconAndText → TextMeshProの位置を調整しました。

f:id:napo909:20210508161547p:plain

ボタンにPhoton Viewと下記スクリプトPhotonMethodSharing .csをアタッチします。
メソッド前に[PunRPC]と記載したメソッドが共有できるメソッドになります。

スクリプトは以下のように設定します。

Photon View

オブジェクトの権限取得依頼が来た場合は無条件で受け渡すように、Ownership TransferTakeOverに設定します。

Photon Method Sharing

ボタンのIconAndText → TextMeshProをTextに設定します。

Interactable

On ClickPhotonMethodSharing.csButtonActionを設定します。

f:id:napo909:20210508164159p:plain

2. 動作確認

Hololens2とUnity Editor間で動作確認します。
一方がボタンを押すと、両方の端末上でPhotonSharingMethodが実行され、ボタン中の数値がカウントアップします。
今回は値の共有はしていないので、後からルームに接続すると0からカウントを開始します。
値を共有するには、前回のOnPhotonSerializeView を使用する必要があります。
※ 値共有だけで実現できますが、今回の目的は関数実行の共有なので実装していません。

f:id:napo909:20210508165823g:plain