接続コールバック

目次

  概要
  事前設定

  接続コールバック一覧

  OnConnectedToMonobit メソッド
  OnConnectToServerFailed メソッド
  OnMunCloudConnectionFailed メソッド
  OnMonobitMaxConnectionReached メソッド
  OnConnectedToServer メソッド
  OnJoinedLobby メソッド
  OnUpdatedSearchPlayers メソッド
  OnReceivedRoomListUpdate メソッド
  OnCreatedRoom メソッド
  OnCreateRoomFailed メソッド
  OnJoinedRoom メソッド
  OnJoinRoomFailed メソッド
  OnMonobitRandomJoinFailed メソッド
  OnOtherPlayerConnected メソッド
  OnHostChanged メソッド
  OnMonobitInstantiate メソッド
  OnMonobitCustomRoomParametersChanged メソッド
  OnMonobitPlayerParametersChanged メソッド
  OnMonobitSerializeView メソッド
  OnMonobitSerializeViewWrite メソッド
  OnMonobitSerializeViewRead メソッド
  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 メソッド サーバとの接続が確立しなかったときにコールされます。
OnMunCloudConnectionFailed メソッド モノビットエンジンクラウドサーバとの接続が確立しなかったときにコールされます。
OnMonobitMaxConnectionReached メソッド 同時接続可能なユーザーの制限に達し、サーバとの接続が出来なかったときにコールされます。
OnConnectedToServer メソッド サーバへの接続が確立し、認証処理も終了したときにコールされます。
このコールバックは MonobitEngine.MonobitNetwork.autoJoinLobby = false に設定している場合に有効です。
MonobitEngine.MonobitNetwork.autoJoinLobby = true に設定している場合には、
このコールバックの代わりに OnJoinedLobby メソッド がコールされます。
OnJoinedLobby メソッド 自身がロビーに入室したときにコールされます。
OnUpdatedSearchPlayers メソッド MonobitEngine.MonobitNetwork.SearchPlayers() のリクエストに対し、サーバがレスポンスを返し、
MonobitEngine.MonobitNetwork.SearchPlayerList が更新されたときにコールされます。
OnReceivedRoomListUpdate メソッド ルームの一覧がサーバによって更新されたときにコールされます。
OnCreatedRoom メソッド ルームの作成に成功したときにコールされます。
OnCreateRoomFailed メソッド ルームの作成に失敗したときにコールされます。
OnJoinedRoom メソッド 自身がルームに入室した時にコールされます。
OnJoinRoomFailed メソッド 自身のルームの入室に失敗したときにコールされます。
OnMonobitRandomJoinFailed メソッド 自身がランダム入室に失敗したときにコールされます。
OnOtherPlayerConnected メソッド ルーム内に自身以外の誰かが、ルームに入室したときにコールされます。
OnHostChanged メソッド 現在のホストが退室・委譲を行ない、新規ホストに切り替わったときにコールされます。
OnMonobitInstantiate メソッド 自身、もしくはルーム内の誰かが、動的オブジェクトの生成処理 を使って
プレハブをインスタンス化したときにコールされます。
OnMonobitCustomRoomParametersChanged メソッド ルームパラメータが変更されたときにコールされます。
OnMonobitPlayerParametersChanged メソッド ルーム内に存在するプレイヤーのパラメータが変更されたときにコールされます。
OnMonobitSerializeView メソッド 自身の所有する MonobitView オブジェクトの同期データの読み書きをするときにコールされます。
OnMonobitSerializeViewWrite メソッド 自身の所有する MonobitView オブジェクトの同期データの書き込みをするときにコールされます。
OnMonobitSerializeViewRead メソッド 自身の所有する MonobitView オブジェクトの同期データの読み込みをするときにコールされます。
OnOwnershipRequest メソッド ルーム内の他の誰かが、自身の所有する MonobitView オブジェクトの
所有権の移譲をリクエストしてきたときにコールされます。
OnConnectionFail メソッド 何らかの原因により、サーバ接続確立後に、接続失敗したときにコールされます。
OnCustomAuthenticationFailed メソッド カスタム認証を有効にしている場合、その認証処理に失敗したときにコールされます。
OnOtherPlayerDisconnected メソッド ルーム内の自身以外の誰かが、ルームから退室したときにコールされます。
OnLeftRoom メソッド 自身がルームから退室したときにコールされます。
OnLeftLobby メソッド 自身がロビーから退室したときにコールされます。
OnDisconnectedFromServer メソッド サーバから回線を切断したときにコールされます。


OnConnectedToMonobit メソッド

機能

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

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

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


OnConnectToServerFailed メソッド

機能

  MunTestサーバ、およびオンプレミス版MUNサーバとの接続が確立できなかったときにコールされます。

  モノビットエンジンクラウドサーバとの接続確立ができなかった場合、こちらではなく、
  代わりに OnMunCloudConnectionFailed メソッド がコールされます。

引数

変数名 内容
MonobitEngine.DisconectCause cause 以下のいずれかの値を取ります。
定数値 内容
DisconnectCause.ExceptionOnConnect サーバが稼働していません。
DisconnectCause.DisconnectByServer 何らかの原因でサーバから切断されました。
DisconnectCause.MaxConnectionReached 同時接続数の最大値を超えています。
DisconnectCause.FailedToCustomAuth カスタム認証サーバでの認証にしました。
DisconnectCause.FailedToEntryClient MUNクライアントの識別ID発行に失敗しました。
DisconnectCause.TimeoutDisconnect サーバとの接続がタイムアウトしました。

戻り値

内容
void -

記述例

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


OnMunCloudConnectionFailed メソッド

機能

  モノビットエンジンクラウドサーバとの接続が確立できなかったときにコールされます。

  MunTestサーバ、およびオンプレミス版MUNサーバとの接続が確立できなかった場合、こちらではなく、
  代わりに OnConnectToServerFailed メソッド がコールされます。

引数

変数名
MonobitEngine.MunCloudConnectionFailedCause cause

この引数値は以下のいずれかの定数値を取ります。
定数値 内容
MunCloudConnectionFailedCause.FailedToGetMunFromEndpoint エンドポイントからサーバ情報を取得できませんでした。
クラウドサーバの登録情報と一致していない可能性があります。
MunCloudConnectionFailedCause.UnusableConnectionType 許可されていない通信プロトコルを用いて接続しようとしました。

戻り値

内容
void -

記述例

// クラウドサーバに接続できなかったときにデバッグログを出力します。
public void OnMunCloudConnectionFailed( MonobitEngine.MunCloudConnectionFailedCause cause )
{
    Debug.Log("OnMunCloudConnectionFailed : 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");
}


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 入室してきたプレイヤーの情報を取得します。
MonobitEngine.MonobitPlayer は以下のパラメータから成り立ちます。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。

戻り値

内容
void -

記述例

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


OnHostChanged メソッド

機能

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

引数

変数名 内容
MonobitEngine.MonobitPlayer newHost 新規ホストとなったプレイヤーの情報を取得します。
MonobitEngine.MonobitPlayer は以下のパラメータから成り立ちます。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
このメソッドにおいては、必然的にtrueが設定されています。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。

戻り値

内容
void -

記述例

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


OnMonobitInstantiate メソッド

機能

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

引数

変数名 内容
MonobitEngine.MonobitMessageInfo info 誰がオブジェクトを作成したのか、および作成されたオブジェクトの詳細情報を提供します。
MonobitEngine.MonobitMessageInfo は以下のパラメータから成り立ちます。
変数名 内容
MonobitPlayer sender オブジェクトを作成したプレイヤー情報。
MonobitEngine.MonobitPlayer は以下のパラメータから成り立ちます。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。
MonobitView monobitView 作成されたオブジェクトのmonobitViewコンポーネント情報。
monobitView には様々なパラメータがありますが、重要な以下の1点だけ注記します。
変数名 内容
object[] instantiationData sender側から MonobitNetwork.Instantiate() メソッドを実行したとき、
その結果サーバを介して受信した任意のパラメータ情報が格納されています。

戻り値

内容
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] では、プレイヤーパラメータが変更されたプレイヤー情報について、
以下のパラメータで構成される MonobitEngine.MonobitPlayer クラスで取得します。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。

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)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)

なお、ここで 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)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)
MonobitEngine.MonobitMessageInfo info 誰が送信したデータか、および送信元のオブジェクトのMonobitEngine.MonobitViewコンポーネントを提供します。
MonobitEngine.MonobitMessageInfo は以下のパラメータから成り立ちます。
変数名 内容
MonobitPlayer sender このメソッドにおける stream.isReading が true である場合のみ、送信元のプレイヤー情報を示します。
stream.isReading が false の場合、sender は自身のプレイヤー情報を示します。
MonobitEngine.MonobitPlayer は以下のパラメータから成り立ちます。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。
MonobitView monobitView 送信元/受信先となるオブジェクトのmonobitViewコンポーネント情報を示します。
MonobitEngine.MonobitView は以下のパラメータから成り立ちます。
変数名 内容
bool isDontDestroyOnRoom 所有者がルームから退室しても、オブジェクトを削除せずに残すかどうかのフラグ。
bool isInstantiated MonobitNetwork.Instantiate() メソッドを実行して生成したオブジェクトかどうかのフラグ。
bool isChangedSerializeView 受信した情報が、前回このメソッドが呼び出された状態から変化したかどうかのフラグ。
object[] instantiationData sender側から MonobitNetwork.Instantiate() メソッドを実行したとき、
その結果サーバを介して受信した任意のパラメータ情報。
int viewID MonobitView コンポーネントの識別ID。
bool isSceneView あらかじめシーンに設置された、静的なオブジェクトであるかどうかのフラグ。
bool isOwner 自身がオブジェクトの生成者であるかどうかのフラグ。
bool isMine 自身がオブジェクトの所有者であるかどうかのフラグ。
bool Encrypt このメソッドで送受信を行なうデータについて、暗号化を適用するかどうかのフラグ。

戻り値

内容
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();
     }
}


OnMonobitSerializeViewWrite メソッド

機能

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

引数

変数名 内容
MonobitEngine.MonobitStream stream オブジェクト同期データと同時に送受信される、独自情報のパラメータ。
MonobitEngine.MonobitStream は以下のプロパティ/メソッドを持っており、下記プロパティ/メソッドを利用して
独自の同期データを送受信します。
プロパティ名 変数型 内容
MonobitStream.isWriting bool 現在オブジェクトデータの送信処理を行なっている最中かどうかのフラグです。
このメソッドに限り、このフラグは必然的に true を示します。
MonobitStream.isReading bool 現在オブジェクトデータの受信処理を行なっている最中かどうかのフラグです。
ここのメソッドに限り、このフラグは必然的に 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)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)

なお、ここで stream に登録された情報は、OnMonobitSerializeViewWrite() のメソッド終了後、
「自身のクライアントと同一のルームに所属する全ての他クライアント」に対し、自動的に送信されます。
MonobitEngine.MonobitMessageInfo info 送信元である自身のプレイヤー情報、および送信元のオブジェクトのMonobitEngine.MonobitViewコンポーネントを提供します。
MonobitEngine.MonobitMessageInfo は以下のパラメータから成り立ちます。
変数名 内容
MonobitPlayer sender 送信元である自身のプレイヤー情報を示します。
MonobitEngine.MonobitPlayer は以下のパラメータから成り立ちます。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。
MonobitView monobitView 送信元/受信先となるオブジェクトのmonobitViewコンポーネント情報を示します。
MonobitEngine.MonobitView は以下のパラメータから成り立ちます。
変数名 内容
bool isDontDestroyOnRoom 所有者がルームから退室しても、オブジェクトを削除せずに残すかどうかのフラグ。
bool isInstantiated MonobitNetwork.Instantiate() メソッドを実行して生成したオブジェクトかどうかのフラグ。
bool isChangedSerializeView 受信した情報が、前回このメソッドが呼び出された状態から変化したかどうかのフラグ。
object[] instantiationData sender側から MonobitNetwork.Instantiate() メソッドを実行したとき、
その結果サーバを介して受信した任意のパラメータ情報。
int viewID MonobitView コンポーネントの識別ID。
bool isSceneView あらかじめシーンに設置された、静的なオブジェクトであるかどうかのフラグ。
bool isOwner 自身がオブジェクトの生成者であるかどうかのフラグ。
bool isMine 自身がオブジェクトの所有者であるかどうかのフラグ。
bool Encrypt このメソッドで送受信を行なうデータについて、暗号化を適用するかどうかのフラグ。

戻り値

内容
void -

記述例

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

// オブジェクトの同期データについて独自情報を書き込みます。
public void OnMonobitSerializeViewWrite( MonobitEngine.MonobitStream stream, MonobitEngine.MonobitMessageInfo info )
{
    Debug.Log("OnMonobitSerializeViewWrite");

    /*
     * 同期データの書き込み
     */
    stream.Enqueue(intValue);
    stream.Enqueue(strValue);
    stream.Enqueue(floatArray);
    stream.Enqueue(vec3Value);
}




OnMonobitSerializeViewRead メソッド

機能

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

引数

変数名 内容
MonobitEngine.MonobitStream stream オブジェクト同期データと同時に送受信される、独自情報のパラメータ。
MonobitEngine.MonobitStream は以下のプロパティ/メソッドを持っており、下記プロパティ/メソッドを利用して
独自の同期データを送受信します。
プロパティ名 変数型 内容
MonobitStream.isWriting bool 現在オブジェクトデータの送信処理を行なっている最中かどうかのフラグです。
このメソッドに限り、このフラグは必然的に false を示します。
MonobitStream.isReading bool 現在オブジェクトデータの受信処理を行なっている最中かどうかのフラグです。
ここのメソッドに限り、このフラグは必然的に true を示します。
メソッド名 戻り値型 引数型 内容
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)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)
MonobitEngine.MonobitMessageInfo info 誰が送信したデータか、および送信元のオブジェクトのMonobitEngine.MonobitViewコンポーネントを提供します。
MonobitEngine.MonobitMessageInfo は以下のパラメータから成り立ちます。
変数名 内容
MonobitPlayer sender 送信元のプレイヤー情報を示します。
MonobitEngine.MonobitPlayer は以下のパラメータから成り立ちます。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。
MonobitView monobitView 送信元/受信先となるオブジェクトのmonobitViewコンポーネント情報を示します。
MonobitEngine.MonobitView は以下のパラメータから成り立ちます。
変数名 内容
bool isDontDestroyOnRoom 所有者がルームから退室しても、オブジェクトを削除せずに残すかどうかのフラグ。
bool isInstantiated MonobitNetwork.Instantiate() メソッドを実行して生成したオブジェクトかどうかのフラグ。
bool isChangedSerializeView 受信した情報が、前回このメソッドが呼び出された状態から変化したかどうかのフラグ。
object[] instantiationData sender側から MonobitNetwork.Instantiate() メソッドを実行したとき、
その結果サーバを介して受信した任意のパラメータ情報。
int viewID MonobitView コンポーネントの識別ID。
bool isSceneView あらかじめシーンに設置された、静的なオブジェクトであるかどうかのフラグ。
bool isOwner 自身がオブジェクトの生成者であるかどうかのフラグ。
bool isMine 自身がオブジェクトの所有者であるかどうかのフラグ。
bool Encrypt このメソッドで送受信を行なうデータについて、暗号化を適用するかどうかのフラグ。

戻り値

内容
void -

記述例

// 以下の変数を、オブジェクト同期とともに共有される独自情報とします。
int  intValue;
string strValue;
float[] floatArray;
UnityEngine.Vector3 vec3Value;

// オブジェクトの同期データについて独自情報を読み込みます。
public void OnMonobitSerializeViewRead( MonobitEngine.MonobitStream stream, MonobitEngine.MonobitMessageInfo info )
{
    Debug.Log("OnMonobitSerializeViewRead");

    /*
     * 同期データの読み込み
     */
    intValue = (int)stream.Dequeue();
    strValue = (string)stream.Dequeue();
    floatValue = (float[])stream.Dequeue();
    vec3Value = (UnityEngine.Vector3)stream.Dequeue();
}


OnOwnershipRequest メソッド

機能

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

引数

変数名 内容
object[] viewAndPlayer viewAndPlayer[0] では、所有権の移譲を求めているオブジェクトの MonobitEngine.MonobitView 情報が取得できます。
MonobitEngine.MonobitView は以下のパラメータから成り立ちます。
変数名 内容
bool isDontDestroyOnRoom 所有者がルームから退室しても、オブジェクトを削除せずに残すかどうかのフラグ。
bool isInstantiated MonobitNetwork.Instantiate() メソッドを実行して生成したオブジェクトかどうかのフラグ。
bool isChangedSerializeView 受信した情報が、前回このメソッドが呼び出された状態から変化したかどうかのフラグ。
object[] instantiationData sender側から MonobitNetwork.Instantiate() メソッドを実行したとき、
その結果サーバを介して受信した任意のパラメータ情報。
int viewID MonobitView コンポーネントの識別ID。
bool isSceneView あらかじめシーンに設置された、静的なオブジェクトであるかどうかのフラグ。
bool isOwner 自身がオブジェクトの生成者であるかどうかのフラグ。
bool isMine 自身がオブジェクトの所有者であるかどうかのフラグ。
bool Encrypt このメソッドで送受信を行なうデータについて、暗号化を適用するかどうかのフラグ。

viewAndPlayer[1] では、リクエストをしているクライアントの MonobitEngine.MonobitPlayer 情報が取得できます。
MonobitEngine.MonobitPlayer は以下のパラメータから成り立ちます。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。

戻り値

内容
void -

記述例

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


OnConnectionFail メソッド

機能

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

引数

変数名 内容
MonobitEngine.DisconnectCause cause 以下のいずれかの値を取ります。
DisconnectCause.ExceptionOnConnect サーバが稼働していません。
DisconnectCause.DisconnectByServer 何らかの原因でサーバから切断されました。
DisconnectCause.MaxConnectionReached 同時接続数の最大値を超えています。
DisconnectCause.FailedToCustomAuth カスタム認証サーバでの認証にしました。
DisconnectCause.FailedToEntryClient MUNクライアントの識別ID発行に失敗しました。
DisconnectCause.TimeoutDisconnect サーバとの接続がタイムアウトしました。

戻り値

内容
- -

記述例

// サーバへの接続に失敗したときに、デバッグログを出力します。
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 退室したプレイヤーの情報について、以下のパラメータから成り立つデータを取得します。
変数名 内容
int ID ルーム内にてユニークで定義される、プレイヤーの識別ID。
string Name プレイヤー名。
bool isHost このプレイヤーがルームホストであるかどうかの識別フラグ。
Hashtable customParameters プレイヤーに設定された任意のカスタムパラメータ。
Hashtable allParameters 上記4つのデータを統合した、プレイヤーに関する全情報。

戻り値

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