0
0

【Unity】PUN2を学習する サーバー接続、ルーム作成(参加)

Last updated at Posted at 2023-12-09

この記事は、【完走したい】楽しくいろいろやる Advent Calendar 2023の5日目の記事です。
マルチプレイはぜひ作りたいと思っていたのでこの機会に勉強します。
この記事はたった3日でPhotonのPUN2を学習します。

1日目:通信の仕方を学ぶ
2日目:オブジェクトを動かせるようにする
3日目:ゲームを作ります。

通信がしたい

何人かで通信して楽しめるものを作ります。
何かしらゲームを作ります。

const

チュートリアルに突然出てきたけど、まだ習っていなかったので覚えました。
constは、定数として宣言するために使用するもののようです。
メリットは、一度決めた値を変えることができなくすることができるようです。
デメリットとして、定数として宣言するとその後値を代入できなくなるようです。

作り方

大体のやり方は

公式のものにちゃんと書いてあります。

参考にしたページ

に以下のコードについて詳しく解説がされています。
(ここに書いてあるコードは自身の勉強用のために日本語説明を入れたものです)

↓接続用コード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
   
    public class PhotonAdokare : MonoBehaviourPunCallbacks
    {
    [Tooltip("The maximum number of players per room. When a room is full, it can't be joined by new players, and so new room will be created")]
    [SerializeField]
    private byte maxPlayersPerRoom = 4;
    //普段は絶対1にする
    string gameVersion = "1";
    // Start is called before the first frame update
    void Awake()
    {
        PhotonNetwork.AutomaticallySyncScene = true;   
    }

    void Start()
    { //ゲーム開始時に自動的に接続する時に使う。
         // Connect();

        }
    public void Connect()
    {//Photonのネットワークに接続したら
        if (PhotonNetwork.IsConnected)
        {
            PhotonNetwork.JoinRandomRoom();

        }
        //そうでなければ、
        else
        {
            PhotonNetwork.GameVersion = gameVersion;
            PhotonNetwork.ConnectUsingSettings();
        }
    }
    public override void OnConnectedToMaster()
    {//マスターサーバーへ接続したとき
        Debug.Log("Pun Basics Tutorial/Launcher: OnConnectedToMaster() was called by PUN");
        PhotonNetwork.JoinRandomRoom();
    }
    public override void OnDisconnected(DisconnectCause cause)
    {//切断したとき
      Debug.LogWarningFormat("PUN Basics Tutorial/Launcher: OnDisconnected() was called by PUN with reason {0}", cause);
    }
    public override void OnJoinRandomFailed(short returnCode, string message)
    {//ルームへの参加に失敗したとき(ランダム)
        Debug.Log("PUN Basics Tutorial/Launcher:OnJoinRandomFailed() was called by PUN. No random room available, so we create one.\nCalling: PhotonNetwork.CreateRoom");

        // #Critical: we failed to join a random room, maybe none exists or they are all full. No worries, we create a new room.
        PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = maxPlayersPerRoom });
    }

    public override void OnJoinedRoom()
    {//ルームに入った時
        Debug.Log("PUN Basics Tutorial/Launcher: OnJoinedRoom() called by PUN. Now this client is in a room.");
    }
}

チュートリアルを参考にしました。
これで、サーバーに接続、切断ができるようになりました。
ここに解説を書くとかなり長くなりそうなので、コードの中に書いておきました。
void start()の中にある// Connect();の//を取れば、動くようになっています。

まとめ

定数の使いかたとphotonのサーバーへの接続の仕方を学んだ。
接続するときや切断するときに、どうすればよいかを知ることができた。

参考

0
0
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
0
0