接続コールバック

目次

  概要
  事前設定
  接続コールバック一覧
  OnConnectedToMonobit メソッド
  OnConnectToServerFailed メソッド
  OnMonobitMaxConnectionReached メソッド
  OnConnectedToServer メソッド
  OnJoinedLobby メソッド
  OnUpdatedSearchPlayers メソッド
  OnReceivedRoomListUpdate メソッド
  OnLobbyDataUpdate メソッド
  OnCreatedRoom メソッド
  OnCreateRoomFailed メソッド
  OnJoinedRoom メソッド
  OnJoinRoomFailed メソッド
  OnMonobitRandomJoinFailed メソッド
  OnOtherPlayerConnected メソッド
  OnHostChanged メソッド
  OnMonobitInstantiate メソッド
  OnMonobitCustomRoomParametersChanged メソッド
  OnMonobitPlayerParametersChanged メソッド
  OnMonobitSerializeView メソッド
  OnOwnershipRequest メソッド
  OnConnectionFail メソッド
  OnCustomAuthenticationFailed メソッド
  OnOtherPlayerDisconnected メソッド
  OnLeftRoom メソッド
  OnLeftLobby メソッド
  OnDisconnectedFromServer メソッド


概要

MUNサーバとの通信状況を知るためのコールバックメソッド

  MUNサーバに接続し、様々なネットワーク機能を使う中で、いくつかの例外に遭遇するケースが考えられます。

  例えば、サーバ接続に失敗したり、ネットワーク断線による途中切断だったり、その種類は少なくありません。

  また、単なる「サーバに接続している / いない」だけではなく、より詳細の、
  例えば「作成しようとしたルームと同名のルームがあり、ルーム作成に失敗した」り、
  「ルーム入室しようとしたが、どのルームも満員で入室できなかった」り、そういった例外も存在します。

  MUNではそういった例外処理を行なうために、いくつかのコールバックが用意されています。
  ここではその種類について触れておきましょう。


事前設定

MonobitEngine.MonoBehaviour を継承している必要があります。

  接続コールバックは、MonobitEngine.MonoBehaviour に登録されている interface を利用して呼び出されます。
  そのため、接続コールバックを利用するためには、その利用スクリプト内で MonobitEngine.MonoBehaviour を継承する必要があります。
出来ることならば、MonobitEngine.MunMonoBehaviour を継承して、override で接続コールバックを記述することを推奨します。

接続コールバックは、それぞれ「メソッド」として定義してください。

  MonobitEngine.MonoBehaviour に定義されているのは interface であり、実体はありません。
  接続コールバックを利用するためには、その利用スクリプト内で「メソッド」として定義する必要があります。


接続コールバック一覧


  接続コールバックの一覧です。
コールバックメソッド名 機能
OnConnectedToMonobit サーバへ接続したときにコールされます。
ただし、この段階ではまだMUNで通信ができる状態にはなっていません。(認証処理前にコールされます。)
OnConnectToServerFailed サーバとの接続が確立しなかったときにコールされます。
OnMonobitMaxConnectionReached 同時接続可能なユーザーの制限に達し、サーバとの接続が出来なかったときにコールされます。
OnConnectedToServer サーバへの接続が確立し、認証処理も終了したときにコールされます。
このコールバックは MonobitEngine.MonobitNetwork.autoJoinLobby = false に設定している場合に有効です。
MonobitEngine.MonobitNetwork.autoJoinLobby = true に設定している場合には、このコールバックの代わりに OnJoinedLobby がコールされます。
OnJoinedLobby 自身がロビーに入室したときにコールされます。
OnUpdatedSearchPlayers MonobitEngine.MonobitNetwork.SearchPlayers() のリクエストに対し、サーバがレスポンスを返し、
MonobitEngine.MonobitNetwork.SearchPlayerList が更新されたときにコールされます。
OnReceivedRoomListUpdate ルームの一覧がサーバによって更新されたときにコールされます。
OnLobbyDataUpdate サーバがロビーの統計情報をクライアントに送信し、MonobitNetwork.LobbyData が更新されたときにコールされます。
現在のMUNでは空実装となっております。
OnCreatedRoom ルームの作成に成功したときにコールされます。
OnCreateRoomFailed ルームの作成に失敗したときにコールされます。
OnJoinedRoom 自身がルームに入室した時にコールされます。
OnJoinRoomFailed 自身のルームの入室に失敗したときにコールされます。
OnMonobitRandomJoinFailed 自身がランダム入室に失敗したときにコールされます。
OnOtherPlayerConnected ルーム内に自身以外の誰かが、ルームに入室したときにコールされます。
OnHostChanged 現在のホストが退室・委譲を行ない、新規ホストに切り替わったときにコールされます。
OnMonobitInstantiate 自身、もしくはルーム内の誰かが、MonobitEngine.MonobitNetwork.Instantiate を使ってプレハブをインスタンス化したときにコールされます。
インスタンス化対象となるプレハブにアタッチされているスクリプトでのみコールされます。
OnMonobitCustomRoomParametersChanged ルームパラメータが変更されたときにコールされます。
OnMonobitPlayerParametersChanged ルーム内に存在するプレイヤーのパラメータが変更されたときにコールされます。
OnMonobitSerializeView 自身の所有する MonobitView オブジェクトの同期データの読み書きをするときにコールされます。
インスタンス化対象となるプレハブにアタッチされているスクリプトでのみコールされます。
OnOwnershipRequest ルーム内の他の誰かが、自身の所有する MonobitView オブジェクトの所有権をリクエストしてきたときにコールされます。
インスタンス化対象となるプレハブにアタッチされているスクリプトでのみコールされます。
OnConnectionFail 何らかの原因により、サーバ接続確立後に、接続失敗したときにコールされます。
OnCustomAuthenticationFailed カスタム認証を有効にしている場合、その認証処理に失敗したときにコールされます。
OnOtherPlayerDisconnected ルーム内の自身以外の誰かが、ルームから退室したときにコールされます。
OnLeftRoom 自身がルームから退室したときにコールされます。
OnLeftLobby 自身がロビーから退室したときにコールされます。
OnDisconnectedFromServer サーバから回線を切断したときにコールされます。


OnConnectedToMonobit メソッド

機能

  サーバへ接続したときにコールされます。
  ただし、この段階ではまだMUNで通信ができる状態にはなっていません。(認証処理前にコールされます。)

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// サーバに接続したときにデバッグログを出力します。
public void OnConnectedToMonobit()
{
    Debug.Log("OnConnectedToMonobit");
}


OnConnectToServerFailed メソッド

機能

  サーバとの接続が確立しなかったときにコールされます。

引数

変数名 内容
MonobitEngine.DisconectCause cause 以下のいずれかの値を取ります。
ExceptionOnConnect 接続を確立できませんでした。サーバが稼働していません。
DisconnectByServer サーバとの接続がタイムアウトしました。
MaxCcuReached 同時接続数の最大値を超えています。

戻り値

内容
void -

記述例

// サーバに接続できなかったときにデバッグログを出力します。
public void OnConnectToServerFailed( MonobitEngine.DisconnectCause cause )
{
    Debug.Log("OnConnectToServerFailed : cause = " + cause.ToString() );
}

OnMonobitMaxConnectionReached メソッド

機能

  同時接続可能なユーザーの制限に達し、サーバとの接続が出来なかったときにコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// 同時接続数制限に達したときにデバッグログを出力します。
public void OnMonobitMaxConnectionReached()
{
    Debug.Log("OnMonobitMaxConnectionReached");
}


OnConnectedToServer メソッド

機能

  サーバへの接続が確立し、認証処理も終了したときにコールされます。
  このコールバックは MonobitEngine.MonobitNetwork.autoJoinLobby = false に設定している場合に有効です。
  MonobitEngine.MonobitNetwork.autoJoinLobby = true に設定している場合には、このコールバックの代わりに OnJoinedLobby がコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// サーバに接続&認証完了したときにデバッグログを出力します。
public void OnConnectedToServer()
{
    Debug.Log("OnConnectedToServer");
}


OnJoinedLobby メソッド

機能

  自身がロビーに入室したときにコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// ロビーに入室したときに、デバッグログを出力します。
public void OnJoinedLobby()
{
    Debug.Log("OnJoinedLobby");
}


OnUpdatedSearchPlayers メソッド

機能

  MonobitEngine.MonobitNetwork.SearchPlayers() のリクエストに対し、サーバがレスポンスを返し、
  MonobitEngine.MonobitNetwork.SearchPlayerList が更新されたときにコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// フレンドリストが更新されたときに、デバッグログを出力します。
public void OnUpdatedSearchPlayers()
{
    Debug.Log("OnUpdatedSearchPlayers");
}


OnReceivedRoomListUpdate メソッド

機能

  ルームの一覧がサーバによって更新されたときにコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// ルーム一覧が更新されたときに、デバッグログを出力します。
public void OnReceivedRoomListUpdate()
{
    Debug.Log("OnReceivedRoomListUpdate");
}


OnLobbyDataUpdate メソッド

機能

  サーバがロビーの統計情報をクライアントに送信し、MonobitNetwork.LobbyStatistics が更新されたときにコールされます。
  現在のMUNでは空実装となっております。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// ロビー統計情報が更新されたときに、デバッグログを出力します。
public void OnLobbyDataUpdate()
{
    Debug.Log("OnLobbyDataUpdate");
}


OnCreatedRoom メソッド

機能

  ルームの作成に成功したときにコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// ルームを生成したときに、デバッグログを出力します。
public void OnCreatedRoom()
{
    Debug.Log("OnCreatedRoom");
}


OnCreateRoomFailed メソッド

機能

  ルームの作成に失敗したときにコールされます。

引数

変数名 内容
object[] codeAndMsg codeAndMsg[0] にはint型のエラーコード、codeAndMsg[1]には string 型のデバッグメッセージが入ります。

戻り値

内容
void -

記述例

// ルームの作成に失敗した時に、デバッグログを出力します。
public void OnCreateRoomFailed(object[] codeAndMsg)
{
    Debug.Log("OnCreateRoomFailed : errorCode = " + codeAndMsg[0] + ", message = " + codeAndMsg[1] );
}


OnJoinedRoom メソッド

機能

  自身がルームに入室した時にコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// ルームに入室したときに、デバッグログを出力します。
public void OnJoinedRoom()
{
    Debug.Log("OnJoinedRoom");
}


OnJoinRoomFailed メソッド

機能

  自身のルームの入室に失敗したときにコールされます。

引数

変数名 内容
object[] codeAndMsg codeAndMsg[0] にはint型のエラーコード、codeAndMsg[1]には string 型のデバッグメッセージが入ります。

戻り値

内容
void -

記述例

// ルームの入室に失敗した時に、デバッグログを出力します。
public void OnJoinRoomFailed(object[] codeAndMsg)
{
    Debug.Log("OnJoinRoomFailed : errorCode = " + codeAndMsg[0] + ", message = " + codeAndMsg[1] );
}


OnMonobitRandomJoinFailed メソッド

機能

  自身がランダム入室に失敗したときにコールされます

引数

変数名 内容
object[] codeAndMsg codeAndMsg[0] にはint型のエラーコード、codeAndMsg[1]には string 型のデバッグメッセージが入ります。

戻り値

内容
void -

記述例

// ルームのランダム入室に失敗した時に、デバッグログを出力します。
public void OnMonobitRandomJoinFailed(object[] codeAndMsg)
{
    Debug.Log("OnMonobitRandomJoinFailed : errorCode = " + codeAndMsg[0] + ", message = " + codeAndMsg[1] );
}


OnOtherPlayerConnected メソッド

機能

  ルーム内に自身以外の誰かが、ルームに入室したときにコールされます。

引数

変数名 内容
MonobitEngine.MonobitPlayer newPlayer 入室してきたプレイヤーの情報

戻り値

内容
void -

記述例

// ルームに誰かが入室してきた時に、デバッグログを出力します。
public void OnOtherPlayerConnected(MonobitEngine.MonobitPlayer newPlayer)
{
    Debug.Log("OnOtherPlayerConnected : playerName = " + newPlayer.name );
}


OnHostChanged メソッド

機能

  現在のホストが退室・委譲を行ない、新規ホストに切り替わったときにコールされます。

引数

変数名 内容
MonobitEngine.MonobitPlayer newHost 新規ホストとなったプレイヤーの情報

戻り値

内容
void -

記述例

// ホストが変更されたときに、デバッグログを出力します。
public void OnHostChanged(MonobitEngine.MonobitPlayer newHost)
{
    Debug.Log("OnHostChanged : playerName = " + newHost.name );
}


OnMonobitInstantiate メソッド

機能

  自身、もしくはルーム内の誰かが、MonobitEngine.MonobitNetwork.Instantiate を使ってプレハブをインスタンス化したときにコールされます。
  インスタンス化対象となるプレハブにアタッチされているスクリプトでのみコールされます。

引数

変数名 内容
MonobitEngine.MonobitMessageInfo info 誰がオブジェクトを作成したのか、いつ作成したのかの情報を提供します。

戻り値

内容
void -

記述例

// プレハブがインスタンス化されたときに、デバッグログを出力します。
public void OnMonobitInstantiate(MonobitEngine.MonobitMessageInfo info)
{
    Debug.Log("OnMonobitInstantiate : creator name = " + info.sender.name);
}


OnMonobitCustomRoomParametersChanged メソッド

機能

  ルーム内のパラメータが変更されたときにコールされます。

引数

変数名 内容
Hashtable parametersThatChanged 変更されたルームパラメータ情報。

戻り値

内容
void -

記述例

// ルームのプロパティが変更されたときに、デバッグログを出力します。
public void OnMonobitCustomRoomParametersChanged(Hashtable peopertiesThatChanged)
{
    Debug.Log("OnMonobitCustomRoomParametersChanged");
}


OnMonobitPlayerParametersChanged メソッド

機能

  ルーム内に存在するプレイヤーパラメータが変更されたときにコールされます。

引数

変数名 内容
object[] playerAndUpdatedProps playerAndUpdatedProps[0] が MonobitPlayer 情報。
playerAndUpdatedProps[1] が、変更されたパラメータ情報(Hashtable)

戻り値

内容
void -

記述例

// プレイヤーのプロパティが変更されたときに、デバッグログを出力します。
public void OnMonobitPlayerParametersChanged(object[] playerAndUpdateProps)
{
    Debug.Log("OnMonobitPlayerParametersChanged");
}


OnMonobitSerializeView メソッド

機能

  自身の所有する MonobitView オブジェクトの同期に際し、独自情報を読み書きするときにコールされます。
  インスタンス化対象となるプレハブにアタッチされているスクリプトでのみコールされます。

引数

変数名 内容
MonobitEngine.MonobitStream stream オブジェクト同期データと同時に送受信される、独自情報のパラメータ。
MonobitEngine.MonobitStream は以下のプロパティ/メソッドを持っており、下記プロパティ/メソッドを利用して
独自の同期データを送受信します。
プロパティ名 変数型 内容
MonobitStream.isWriting bool 現在オブジェクトデータの送信処理を行なっている最中かどうかのフラグです。
このフラグが true の場合には送信処理中、false の場合には受信処理中です。
MonobitStream.isReading bool 現在オブジェクトデータの受信処理を行なっている最中かどうかのフラグです。
このフラグが true の場合には受信処理中、false の場合には送信処理中です。
メソッド名 戻り値型 引数型 内容
MonobitStream.Enqueue() void object 独自データについて引数型に指定した値をシリアライズし、stream に登録します。
引数型で指定できる、シリアライズ可能なデータ型は以下の形式に限られます。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・object(Object)
・Vector2, Vector3, Vector4
・Quaternion
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary

なお、ここで stream に登録された情報は、OnMonobitSerializeView() のメソッド終了後、
「自身のクライアントと同一のルームに所属する全ての他クライアント」に対し、自動的に送信されます。
MonobitStrean.Dequeue() object void 独自データについて受信した情報についてデシリアライズし、stream から取得します。
戻り値としてデシリアライズ可能なデータ型は以下の形式に限られます。
  ※ 取得するデータは送信と同一の OnMonobitSerializeView() で送信している順番と
    同一順で取得する必要があります。
  ※ 取得する際に cast を明示する必要があります。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・object(Object)
・Vector2, Vector3, Vector4
・Quaternion
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary

戻り値

内容
void -

記述例

// 以下の変数を、オブジェクト同期とともに共有される独自情報とします。
int  intValue = 100;
string strValue = "MonobitEngine";
float[] floatArray = new float[] { 1.0f, 2.5f };
UnityEngine.Vector3 vec3Value = new UnityEngine.Vector3.zero;

// オブジェクトの同期データについて独自情報読み書きをするときに、デバッグログを出力します。
public void OnMonobitSerializeView( MonobitEngine.MonobitStream stream, MonobitEngine.MonobitMessageInfo info )
{
    Debug.Log("OnMonobitSerializeView");

    if( stream.isWriting )
    {
        /*
         * 同期データの書き込み
         */
        stream.Enqueue(intValue);
        stream.Enqueue(strValue);
        stream.Enqueue(floatArray);
        stream.Enqueue(vec3Value);
    }
    else
    {
        /*
         * 同期データの読み込み
         */
        intValue = (int)stream.Dequeue();
        strValue = (string)stream.Dequeue();
        floatValue = (float[])stream.Dequeue();
        vec3Value = (UnityEngine.Vector3)stream.Dequeue();
     }
}


OnOwnershipRequest メソッド

機能

  ルーム内の他の誰かが、自身の所有する MonobitView オブジェクトの所有権をリクエストしてきたときにコールされます。
  インスタンス化対象となるプレハブにアタッチされているスクリプトでのみコールされます。

引数

変数名 内容
object[] viewAndPlayer viewAndPlayer[0] が、所有権の移譲を求めている MonobitView オブジェクト。
viewAndPlayer[1] が、リクエストをしている MonobitPlayer 情報。

戻り値

内容
void -

記述例

// オブジェクトの所有権の移譲を求めてきたときに、デバッグログを出力します。
public void OnOwnershipRequest( object[] viewAndPlayer )
{
    Debug.Log("OnOwnershipRequest");
}


OnConnectionFail メソッド

機能

  何らかの原因により、サーバ接続確立後に、接続失敗したときにコールされます。

引数

変数名 内容
MonobitEngine.DisconnectCause cause 以下のいずれかの値を取ります。
ExceptionOnConnect 接続を確立できませんでした。サーバが稼働していません。
DisconnectByServer サーバとの接続がタイムアウトしました。
MaxCcuReached 同時接続数の最大値を超えています。

戻り値

内容
- -

記述例

// サーバへの接続に失敗したときに、デバッグログを出力します。
public void OnConnectionFail ( MonobitEngine.DisconnectCause cause )
{
    Debug.Log("OnConnectionFail  : cause = " + cause.ToString() );
}




OnCustomAuthenticationFailed メソッド

機能

  カスタム認証を有効にしている場合、その認証処理に失敗したときにコールされます。

引数

変数名 内容
string rawData カスタム認証サーバから返信を受けた生データを格納しています。
カスタム認証サーバがダウンしている場合など、何らかの原因により認証サーバに接続できなかった場合は、空文字が入ります。

戻り値

内容
- -

記述例

// カスタム認証に失敗したときに、デバッグログを出力します。
public void OnCustomAuthenticationFailed ( string rawData )
{
    Debug.Log("OnCustomAuthenticationFailed : rawData = " + rawData );
}


OnOtherPlayerDisconnected メソッド

機能

  ルーム内の自身以外の誰かが、ルームから退室したときにコールされます。

引数

変数名 内容
MonobitEngine.MonobitPlayer otherPlayer 退室したプレイヤーの情報

戻り値

内容
void -

記述例

// ルーム内の誰かが退室したときに、デバッグログを出力します。
public void OnOtherPlayerDisconnected(MonobitEngine.MonobitPlayer otherPlayer)
{
    Debug.Log("OnOtherPlayerDisconnected : playerName = " + otherPlayer.name );
}


OnLeftRoom メソッド

機能

  自身がルームから退室したときにコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// ルームから退室したときに、デバッグログを出力します。
public void OnLeftRoom()
{
    Debug.Log("OnLeftRoom");
}


OnLeftLobby メソッド

機能

  自身がロビーから退室したときにコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// ロビーから退室したときに、デバッグログを出力します。
public void OnLeftLobby()
{
    Debug.Log("OnLeftLobby");
}


OnDisconnectedFromServer メソッド

機能

  サーバから回線を切断したときにコールされます。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

// サーバから切断したときにデバッグログを出力します。
public void OnDisconnectedFromServer()
{
    Debug.Log("OnDisconnectedFromServer");
}