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");
}
}
}
}