環境
- Unity2018.3以降
- PUN2
準備
- PUN2で始めるオンラインゲーム開発入門【その1】 - Unity Connectの初期設定をしように則って初期設定を行う
ネットワークオブジェクトにしたいGameObjectをPrefab化し、Resourcesフォルダに入れる
PhotonViewをアタッチする
Transoformを同期する場合
PhotonTransformViewをPrefabにアタッチする
PhotonTransformViewのSyncronize OptionsのPosition, Rotation, Scaleの項目の中から同期したい項目にチェックを入れる
PhotonViewのObserved Componentsに、アタッチしたPhotonTransformViewをドラッグ&ドロップする
Animatorを同期する場合
PhotonAnimatorViewをPrefabにアタッチする
PhotonViewのObserved Componentsに、アタッチしたPhotonAnimatorViewをドラッグ&ドロップする
PhotonAnimatorViewのオプションから同期したい項目を設定する
その他の特定のパラメータを同期する場合
同期を担当するクラスを作成し(既にある場合は作成する必要はありません)、
IPunObservable
インターフェースを実装する次のように
OnPhotonSerializeView()
メソッドを作成する(ここではparameter
を同期したいパラメータとしています)
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.IsWriting)
{
stream.SendNext(this.parameter);
}
else
{
this.parameter = (int)stream.ReceiveNext();
}
}
3 . PhotonViewのObserved Componentsに上記の処理を書いたコンポーネントをドラッグ&ドロップする
インスタンスを生成する
ネットワークオブジェクトは
PhotonNetwork.Instantiate("PrefabName", position, rotation, 0);
で生成することができます。
このメソッドの第4引数はグループを指定しています。
グループというのはルーム内にあるサブチャンネル的なもので、ルーム内の特定の人達とボイスチャットをしたい場合などに使います。
ここではとりあえず0を指定しています。