LoginSignup
41
37

More than 5 years have passed since last update.

PhotonCloud + Unityでオンラインゲーム開発 その1 ~ルームの作成~

Last updated at Posted at 2014-05-10

Photon Cloudを使ったオンラインゲーム開発の備忘録です。

1.ルームを作成


まず、新しいSceneを作成します。
今回は名前を「RoomScene」とします。
このシーンでは、オンラインゲームのルームにあたる部分を作成していきます。
このシーンに[Game Object]>[Create Empty]から空のゲームオブジェクトを作成します。
今回はこのゲームオブジェクトの名前を「RoomManager」とします。
このオブジェクトにルームに関するスクリプトをアタッチしていきます。
まず、C#のスクリプトを作成してください。
RoomManager.cs
using UnityEngine;
using System;

public class RoomManager : MonoBehaviour {

    private string playerName = "GuestAAA";
    private string roomName = "myRoom";
    private bool connectFailed = false;


    public void Awake()
    {
        // マスタークライアントのsceneと同じsceneを部屋に入室した人もロードする。
        PhotonNetwork.automaticallySyncScene = true;
        // もしまだ接続していない状態ならば
        if (PhotonNetwork.connectionStateDetailed == PeerState.PeerCreated)
        {
            // PhotonServerSettingsの設定に従ってPhotonNetwork(マスターサーバー)に接続する。
            PhotonNetwork.ConnectUsingSettings("1.0");
        }

        // もしPhotonNetWorkに名前を登録していないならば、PhotonNetworkに名前を登録する
        if (PhotonNetwork.playerName==null)
        {
             //ランダムにプレイヤーの名前を生成
            this.playerName = "Guest" + UnityEngine.Random.Range(1, 9999);
             //Photonにプレイヤーを登録
            PhotonNetwork.playerName = this.playerName; 
        }else{
             //Photonにプレイヤーを登録
            this.playerName = PhotonNetwork.playerName;
        }
    }
}

Photonの初期化は以上です。
次に、Roomにログインするためのメニューを作成します。

スクリプト内に適当に下のメソッドを実装してください。

RoomManager.cs
--省略--
    public void OnGUI(){
                //ルーム名をテキストフィールドから入力させる
                this.roomName = GUILayout.TextField(this.roomName);
                //ルーム作成ボタン
        if (GUILayout.Button("Create Room", GUILayout.Width(100)))
        {
                        //ルームを作成。引数はルーム名
            PhotonNetwork.CreateRoom(this.roomName);
        }
                //ルームに入室するボタン
        if (GUILayout.Button("Join Room", GUILayout.Width(100)))
        {
                        //入室。引数はルーム名
            PhotonNetwork.JoinRoom(this.roomName);
        }
        }
--省略--

また、スクリプト最下部に以下を追記してください。

RoomManager.cs
--省略--
        //以下必須(?)メソッド。
    //各ステート時にコールされる。書かないとエラーに
    //入室時にコール
    public void OnJoinedRoom()
    {
        Debug.Log("OnJoinedRoom");
    }
    //部屋作成に成功したときにコール
    public void OnCreatedRoom()
    {
        Debug.Log("OnCreatedRoom");
    }
    //接続が切断されたときにコール
    public void OnDisconnectedFromPhoton()
    {
        Debug.Log("Disconnected from Photon.");
    }
    //接続失敗時にコール
    public void OnFailedToConnectToPhoton(object parameters)
    {
        this.connectFailed = true;
        Debug.Log("OnFailedToConnectToPhoton. StatusCode: " + parameters + " ServerAddress: " + PhotonNetwork.networkingPeer.ServerAddress);
    }

これで入室処理が完成です。

第二回
http://qiita.com/yuya-okada/items/69a722bea2eb3dea7d6d

41
37
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
41
37