概要
PUN2を使ってサーバーに接続してルームを作成する際に、どのようなコードを書いていけばいいのか迷ってしまった時の為の備忘録的なメモです。
環境
- PUN2
- Unity 2018.3以降
実装
MasterClientに同期
PhotonNetwork.AutomaticallySyncScene = true;
このように設定すると、MasterClient以外のClientがシーンの切り替えを、MasterClientのシーンの切り替えに同期して行うことができます。
Awake()
メソッド内などに書くと良いと思います
サーバーに接続する
1.PhotonServerSettingsで設定を行う
Assets/Photon/PhotonUnityNetworking/Resources/
にあるPhotonServerSettings
で設定を行います。
とりあえずApp VersionとFixed Regionを設定しておけば大丈夫だと思います。
App Version : 1.0
Fixed Region : jp
のように設定します。
2.ゲームのバージョンを設定する
PhotonNetwork.GameVersion = "1.0";
バージョンの異なるClient同士はマッチングすることができないので注意しましょう。
3.次にPhotonのサーバーに接続する
サーバーに接続したい場所で
PhotonNetwork.ConnectUsingSettings();
を実行すればサーバーに接続することができます。
ルームが既に作られている場合はルームに入る
public override void OnConnectedToMaster()
{
PhotonNetwork.JoinRandomRoom();
}
サーバーに接続した際に呼ばれるコールバックであるOnConnectedToMaster()
メソッド内に処理を記述します。
ここではランダムなルームに入る場合について考えます。
ランダムなルームに入る処理はPhotonNetwork.JoinRandomRoom()
です。
なのでこれをOnConnectedToMaster()
内に記述します。
ルームが無い場合はルームを作る
public override void OnJoinRandomFailed(short returnCode, string message)
{
PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = 4});
}
もしルームが1つも作られていない状態で上記のようにルームに入ろうとすると失敗します。
この時に呼ばれるコールバックがOnJoinRandomFailed()
です。
なので、このOnJoinRandomFailed()
メソッド内にルームを作る処理を書きます。
ルームを作る処理はPhotonNetwork.CreateRoom()
です。
PhotonNetwork.CreateRoom()
の第一引数にはルーム名を記述できますが、ルーム名を特に設定したくない場合はnull
と書きます。
PhotonNetwork.CreateRoom()
の第二引数にはRoomOptionsクラスのインスタンスを代入します。
RoomOptionsクラスは様々なプロパティを持ち、これらを色々と調整することによって、作成する部屋の設定を決めることができます。
ここでは部屋の最大の人数が4人になるようにMaxPlayers = 4
設定しています。
他の設定をしたい場合は次のページをご覧ください。
Photon Unity Networking 2: RoomOptions Class Reference