はじめに
以前にPUNを使っての接続方法を投稿しましたが、PUN2でもなんとかできるようになったので記事を書きます。前回の内容と被る部分のあるのでそちらを参照してください。PUNをインポート後AppIDを入力するところまでは、PUN2をインポートする以外は同じになります。
Photonに接続する
https://qiita.com/uroshinse/items/004b47562e202be10b72
PUN2(Photon Unity Network 2)をインポートする
PhotonServerSettings
Settingsはインポート後AppID入力がうまくいけば、App Id Realtimeに自動的に反映されているので確認してください。入力しなかった場合は必ず入力してください。
部屋の作成から接続までのスクリプト
ヒエラキー上にPhoton(空のGameObject)を作成して、以下のスクリプトを作成後Photon(空のGameObject)にスクリプトをアタッチする。
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
namespace PhotonPractice{
public class PhotonLogin : MonoBehaviourPunCallbacks {
//ゲームバージョン指定(設定しないと警告が出る)
string GameVersion = "Ver1.0";
//ルームオプションのプロパティー
static RoomOptions RoomOPS = new RoomOptions()
{
MaxPlayers = 2, //0だと人数制限なし
IsOpen = true, //部屋に参加できるか
IsVisible = true, //この部屋がロビーにリストされるか
};
// Use this for initialization
void Start () {
//PhotonCloudに接続
Debug.Log("PhotonLoing");
//ゲームバージョン設定
PhotonNetwork.GameVersion = GameVersion;
//PhotonServerSettingsファイルで構成されたPhotonに接続。
PhotonNetwork.ConnectUsingSettings();
}
//クライアントがマスターサーバーに接続されたときに呼び出される。
public override void OnConnectedToMaster()
{
//ルームへの参加 or 新規作成
PhotonNetwork.JoinOrCreateRoom("Photonroom",RoomOPS, null); //("ルームの名前",ルームオプションの変数,新規ルームを一覧したいロビー。nullで無視)
}
//ルーム作成して入室に成功したときに呼び出される。
public override void OnJoinedRoom()
{
//Room型とPlayer型の指定。
Room myroom = PhotonNetwork.CurrentRoom; //myroom変数にPhotonnetworkの部屋の現在状況を入れる。
Photon.Realtime.Player player = PhotonNetwork.LocalPlayer; //playerをphotonnetworkのローカルプレイヤーとする
Debug.Log("ルーム名:" + myroom.Name);
Debug.Log("PlayerNo" + player.ActorNumber);
Debug.Log("プレイヤーID" + player.UserId);
//この部分はニックネームを決めるためのもので、入力は不要です。
if(player.ActorNumber == 1)
{
player.NickName = "わたしは1です";
}
Debug.Log("プレイヤー名" + player.NickName);
Debug.Log("ルームマスター" + player.IsMasterClient); //ルームマスターならTrur。最初に部屋を作成した場合は、基本的にルームマスターなはず。
}
//入室失敗したときに呼び出される動作。
public override void OnJoinRandomFailed(short returnCode, string message) {
Debug.Log("入室失敗");
//ルームを作成する。
PhotonNetwork.CreateRoom(null, RoomOPS); //JoinOrCreateroomと同じ引数が使用可能。nullはルーム名を作成したくない場合roomNameを勝手に割り当てる。
}
//ルーム作成失敗したときの動作。
public override void OnCreateRoomFailed(short returnCode, string message) {
Debug.Log("作成失敗");
}
}
}
再生ボタンを押して以下の画像が表示されれば接続成功です。
おわりに
今回は接続のみでしたが、次回はプレイヤー操作も含めた記事を書く予定です。
参考
VR-studies:https://github.com/yumemi-inc/vr-studies/wiki
ドキュメント:https://doc-api.photonengine.com/en/pun/v2/index.html