Unity

【Unity】PUN2便利な関数達(備忘録)

2020-11-29

バージョン

Photon Unity Networkバージョン:PUN2

Unityバージョン:2020.1.13f1

 

PUN2(Photon Unity Network 2)の便利な関数

備忘録を兼ねてPUN2で利用すると便利な関数達をつらつらと記載していきます〜

(随時更新していきます)

 

序盤

PhotonNetwork.ConnectUsingSettings();

Photonに接続するために必須な関数

これを実行しないことには何も始まらない

public override void OnConnectedToMaster()

PhotonNetwork.ConnectUsingSettings()を実行して、マスターサーバに接続された時に呼ばれます

PhotonNetwork.JoinLobby();

これ実行でロビーに入ります

public override void OnJoinedLobby()

ロビーに入った時に実行される

 

部屋に入る

PhotonNetwork.JoinRandomRoom();

開いている部屋にランダムに入りたい時に使用(同じロビーにいる必要があるはず...)

 

public override void OnJoinedRoom()

部屋に入ることに成功した時に呼ばれる

※部屋を作成した時にも呼ばれます!(部屋を作成して、その部屋に入ると言う流れなので)

 

public override void OnJoinRandomFailed(short returnCode, string message)

ランダムな部屋への入室に失敗した時に呼ばれる

たいてい(私の場合)、部屋の入室に失敗した場合は部屋を作成するという流れが基本です

 

部屋の作成と特定

PhotonNetwork.CreateRoom(null, roomOptions, null);

部屋を作成します

第一引数:部屋の名前をつけることができます。nullにすると自動で作成してくれます

 

public override void OnCreatedRoom()

部屋を作成した時に呼ばれる

 

public override void OnCreateRoomFailed(short returnCode, string message)

部屋の作成に失敗した時に呼ばれる

 

PhotonNetwork.CurrentRoom

自分が現在いる部屋を取得する

 

マスタークライアント

部屋には必ず一人マスタークライアントがいます

※マスタークライアントが部屋から退出した場合は、自動で他の人がマスタークライアントになる

PhotonNetwork.LocalPlayer.IsMasterClient

自分がマスタークライアントかどうかを確認する

返り値がtrueならマスタークライアント、falseなら違う

結構使う頻度多いかも....!

 

PhotonNetwork.SetMasterClient(Player newMasterClient);

これを実行することでマスタークライアントを切り替えることができます!

 

プレイヤーの特定

PhotonNetwork.LocalPlayer

自分自身のプレイヤーを取得する

PhotonNetwork.LocalPlayer.UserIdとすれば自分自身のユーザーIDを取得できる

※ユーザーIDは、アプリを起動するたびに新しく生成される

 

public override void OnPlayerEnteredRoom(Player newPlayer)

他の誰か(プレイヤー)が部屋に来た時に呼ばれる

 

Photonから切断

PhotonNetwork.Disconnect()

これを実行することでPhotonから切断できます

基本的にはif文でPhotonに接続されていたら切断といった形をとるのがいいでしょう

if(PhotonNetwork.IsConnected)
{
    PhotonNetwork.Disconnect();
}

 

public override void OnDisconnected(DisconnectCause cause)

Photonから切断された時に呼ばれます

 

public override void OnPlayerLeftRoom(Player player)

同じ部屋にいた他の人が退出した時に呼ばれる

 

カスタムプロパティ

2種類のカスタムプロパティが存在する

・『部屋のカスタムプロパティ』

・『プレイヤーのカスタムプロパティ』

 

public override void OnRoomPropertiesUpdate(ExitGames.Client.Photon.Hashtable propertiesThatChanged)

部屋のカスタムプロパティが変更された時呼ばれる

 

public override void OnPlayerPropertiesUpdate(Player targetPlayer, ExitGames.Client.Photon.Hashtable changedProps)

プレイヤーのカスタムプロパティが変更された時呼ばれる

 

ソースコード

最後に、参考ソースコード置いておきます〜

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;


//PUN2
//クラス名は各自変更してください〜
public class PhotonFunctions : MonoBehaviourPunCallbacks
{
    //部屋のオプション
    private RoomOptions roomOptions = new RoomOptions()
    {
        MaxPlayers = 2, //0だと人数制限なし
        IsOpen = true, //部屋に参加できるか
        IsVisible = true, //この部屋がロビーにリストされるか
    };


    //起動ボタンを押したときにPhoton接続する
    public void ClickLauncherButton()
    {
        //Photon(マスターサーバー)接続する
        PhotonNetwork.ConnectUsingSettings();
    }

    //マスターサーバーに接続したときに呼ばれる
    public override void OnConnectedToMaster()
    {
        //ロビーに入る
        PhotonNetwork.JoinLobby();
    }

    //ロビーに入るのに成功した時に呼ばれる
    public override void OnJoinedLobby()
    {
        //ランダムな部屋に入る
        PhotonNetwork.JoinRandomRoom();
    }
    //ロビーから退出したときに呼ばれる
    public override void OnLeftLobby()
    {

    }

    //部屋の入室に成功したときに呼ばれる
    public override void OnJoinedRoom()
    {
        
    }
    //指定した部屋の入室に失敗した時に呼ばれる
    public override void OnJoinRoomFailed(short returnCode, string message)
    {

    }
    //ランダムな部屋の入室に失敗した時に呼ばれる
    public override void OnJoinRandomFailed(short returnCode, string message)
    {
        //ルームオプションに設定した部屋を作成する
        PhotonNetwork.CreateRoom(null, roomOptions, null);
        
    }

    //部屋の作成に成功した時に呼ばれる
    public override void OnCreatedRoom()
    {
        
    }
    //部屋の作成に失敗した時に呼ばれる
    public override void OnCreateRoomFailed(short returnCode, string message)
    {

    }

    //Photon(マスターサーバー)から切断された時に呼ばれる
    public override void OnDisconnected(DisconnectCause cause)
    {
        
    }

    //同じ部屋にいたプレイヤーが退出した時に呼ばれる
    public override void OnPlayerLeftRoom(Player player)
    {

    }
}

 

-Unity

© 2021 ITime