LoginSignup
2
2

More than 3 years have passed since last update.

Photon(PUN2)でサーバーに接続してルームを作成する際のメモ

Last updated at Posted at 2019-09-19

概要

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

参考文献

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2