MUNサーバへのログイン制御

目次

  概要
  MUNサーバへの接続状態を調べる
  プレイヤー名の入力
  デフォルトロビーへの入室設定
  MUNサーバへの接続
  ここまでのChatScriptの内容


概要

サーバにログインするために必要な機能を作ってみる

  ここではサーバへのログイン制御について、MUN クライアントの主要機能に触れながら組み込んでみましょう。


MUNサーバへの接続状態を調べる

MUNサーバに接続しているかどうかを知る

  ChatScript の 13 行目付近から、以下のコードを記述します。
        // MUNサーバに接続している場合
        if (MonobitNetwork.isConnect)
        {
        }
        // MUNサーバに接続していない場合
        else
        {
        }
  MonobitNetwork.isConnect は、MUNサーバに接続しているかどうかのフラグです。

  この値が true を示している場合、MUNサーバに接続中ということです。
  逆に false を示している場合には、MUNサーバに未接続(もしくは切断された)ということです。


プレイヤー名の入力

プレイヤー名を入力するGUIを設定する

  ChatScript の 20 行目付近から、以下のコードを記述してください。
            // プレイヤー名の入力
            GUILayout.BeginHorizontal();
            GUILayout.Label("PlayerName : ");
            MonobitNetwork.playerName = GUILayout.TextField(
                (MonobitNetwork.playerName == null) ?
                    "" :
                    MonobitNetwork.playerName, GUILayout.Width(200));
            GUILayout.EndHorizontal();
			
  GUILayout 関連は Unity 標準のAPI ですので、説明を割愛します。

  MonobitNetwork.playerNameは、自身のプレイヤー(ユーザー)の名前で、初期値は null です。
  ここでは、プレイヤー名がnullの場合には空文字("")を、それ以外の場合にはテキストフィールドに入力された
  文字列をそのまま代入するようにします。


デフォルトロビーへの入室設定

デフォルトのロビーに入室するように設定する

  ChatScript の 29 行目付近から、以下のコードを追加します。
		// デフォルトロビーへの自動入室を許可する
		MonobitNetwork.autoJoinLobby = true;
		
  ロビーについては こちら をご参照ください。

  MonobitNetowork.autoJoinLobby は、MUNサーバ接続処理内にて、
  デフォルトで用意されたロビーへの自動入室処理を実行するかどうか、のフラグです。

  この値は、この後に述べる「MUNサーバへの接続」の実行後に設定しても無効です。
  必ずMUNサーバに接続する前に設定してください。


MUNサーバへの接続

MUNサーバに接続する

  ChatScript の 32 行目付近から、以下のコードを記述します。
			// MUNサーバに接続する
			if( GUILayout.Button("Connect Server", GUILayout.Width(150)))
			{
				MonobitNetwork.ConnectServer("SimpleChat_v1.0");
			}
  MonobitNetowork.ConnectServer() メソッドは、MUNサーバに接続するための命令です。
  今回パラメータとして指定している "SimpleChat_v1.0" は、クライアントアプリケーションの「ゲームバージョン」です。

  MUNサーバでは、以下の要素が全て一致するアプリケーションを「同一のアプリケーション」と認識して、各種データの送受信を行います。
    ・認証コード(MonobitAuthenticateCode.asset に含まれる、32桁のGUID)
    ・MUNのバージョン(MUNの通信ライブラリ内で定義している文字列定数)
    ・ゲームバージョン(MonobitNetwork.ConnectServer() メソッドで指定する、任意の文字列)


ここまでのChatScriptの内容


  改めて触れますが、ここまでのChatScript.cs の内容は以下の通りです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MonobitEngine;

public class ChatScript : MonobitEngine.MonoBehaviour
{
    /**
     * GUI制御.
     */
    void OnGUI()
    {
        // MUNサーバに接続している場合
        if (MonobitNetwork.isConnect)
        {
        }
        // MUNサーバに接続していない場合
        else
        {
            // プレイヤー名の入力
            GUILayout.BeginHorizontal();
            GUILayout.Label("PlayerName : ");
            MonobitNetwork.playerName = GUILayout.TextField(
                (MonobitNetwork.playerName == null) ?
                    "" :
                    MonobitNetwork.playerName, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            // デフォルトロビーへの自動入室を許可する
            MonobitNetwork.autoJoinLobby = true;

            // MUNサーバに接続する
            if (GUILayout.Button("Connect Server", GUILayout.Width(150)))
            {
                MonobitNetwork.ConnectServer("SimpleChat_v1.0");
            }
        }
    }
}