機能概要
目次
概要
サーバ
ルーム
ロビー
通信同期
オブジェクト同期
このページでは、MUNで用意されている、使用頻度の高そうな機能について、軽く触れてみます。
具体的な機能内容、ここに記載されていない特殊機能については、次ページからの項目を御覧ください。
サーバ▲
概要
サーバについて
サーバへの接続
サーバに接続するためには、以下のメソッドを呼び出します。
(パラメータに指定する文字定数(以下の例では"v1.0")は開発者で任意の値を設定してください。)
// サーバに接続する
MonobitNetwork.ConnectServer("v1.0");
サーバからの切断
サーバから切断するためには、以下のメソッドを呼び出します。
// サーバから切断する
MonobitNetwork.DisconnectServer();
ルーム▲
概要
ルームについて
ルームへの入室
ルームに入室するには、以下のいずれかの手法を使って入室します。
// roomName の名称を持つルームを作成して入室する
MonobitNetwork.CreateRoom(roomName);
// roomName の名称を持つルームに入室する(入室するルームが無ければ新規に作成する)
MonobitNetwork.JoinOrCreateRoom(roomName, new RoomSettings(), null);
// roomName の名称を持つルームに入室する(入室するルームが無ければ失敗する)
MonobitNetwork.JoinRoom(roomName);
// ランダムでいずれかのルームに入室する(入室するルームが無ければ失敗する)
MonobitNetwork.JoinRandomRoom();
ルームからの退室
ルームから退室する場合には、以下のメソッドを呼び出します。
// 現在入室中のルームから退室する
MonobitNetwork.LeaveRoom();
ルーム入室中の各種ルーム情報の取得
ルームに入室中、以下の方法で、ルーム内情報を取得することが出来ます。
// 入室しているルームの情報の取得
Room room = MonobitNetwork.room;
// 自身の情報を取得
MonobitPlayer myPlayer = MonobitNetwork.player;
// 自身を含む、ルーム内のプレイヤー情報を取得
MonobitPlayer[] playerList = MonobitNetwork.playerList;
// 自身を含まない、ルーム内の他プレイヤー情報を取得
MonobitPlayer[] otherPlayers = MonobitNetwork.otherPlayersList;
ロビー▲
概要
ロビーについて
ロビーへの入室
ロビーに入室するには、以下のいずれかの形式でメソッドを呼び出す必要があります。
// デフォルトのロビーに入室する
MonobitNetwork.JoinLobby();
// ロビー名を作成して入室する
MonobitEngine.LobbyInfo lobbyInfo = new MonobitEngine.LobbyInfo(lobbyName, LobbyKind.Default);
MonobitNetwork.JoinLobby(lobbyInfo);
ロビーからの退室
ロビーから退室する場合には、以下のメソッドを呼び出す必要があります。
// ロビーから退室する
MonobitNetwork.LeaveLobby();
ロビーに属するルーム情報の一覧を取得
ロビーに属するルーム情報の一覧を取得するためには、以下のメソッドを呼び出します。
// ロビーに属するルーム情報の一覧を取得する
RoomData[] roomData = MonobitNetwork.GetRoomData();
注意して頂きたいのは、1つのロビーに大量のルームが存在する場合、
MonobitNetwork.GetRoomData() の実行を頻繁に行なうことで、サーバに負荷をかけてしまう点です。
負荷分散のための方法の1つとして、複数のロビーを作成し、ロビー内のルーム数を分散させるということも考慮に入れてください。
通信同期▲
MonobitViewコンポーネント
MUN では MonobitView コンポーネントが用意されています。
通信同期を行なうために、制御したい GameObject に対し、このコンポーネントを事前にアタッチする必要があります。
GameObject の Inspector から、Add Component > Monobit Networking > Monobit View を選択して割り当ててください。
RPC(リモートプロシージャコール:Remote Procedure Call)
RPC(リモートプロシージャコール)について
RPCによる送信処理は、以下のメソッドを呼び出します。
// RPCのメソッドを呼び出し、メッセージを送信する
monobitView.RPC("OnChat", MonobitTargets.All, "Hello MUN!");
一方、RPCによる受信処理は、[MunRPC]のアトリビュートを適用した、独立した関数を定義します。
// RPCメッセージを受信する
[MunRPC]
void OnChat(string chatMessage)
{
Debug.Log("ChatMessage : " + chatMessage);
}
オブジェクト同期▲
MonobitTransformViewコンポーネント
MUN では MonobitTransformView コンポーネントが用意されています。
オブジェクトの位置・姿勢・倍率の同期を行なうために、制御したい GameObject に対し、このコンポーネントを事前にアタッチする必要があります。
GameObject の Inspector から、Add Component > Monobit Networking >
Monobit Transform View を選択して割り当ててください。
MonobitAnimatorViewコンポーネント
同様に、MonobitAnimatorView コンポーネントも用意されています。
アニメーションの同期を行なうために、制御したい GameObject に対し、このコンポーネントを事前にアタッチする必要があります。
GameObject の Inspector から、Add Component > Monobit Networking >
Monobit Animator View を選択して割り当ててください。
MonobitViewの監視コンポーネントリストへの登録
上記2つのコンポーネントは、MonobitView の監視コンポーネントリストに登録することで、初めてその機能が有効にすることができます。
登録は忘れずに行っておいてください。
ネットワーク越しのインスタンス生成
ネットワーク越しにインスタンスを生成するためには、以下のメソッドを呼び出します。
ここで生成されたインスタンスは、通常の移動・回転・拡大縮小・アニメーション制御によって、他のクライアントとも連動して動作します。
// ネットワーク越しに、インスタンスを生成する
GameObject obj = MonobitNetwork.Instantiate( "prefabName", Vector3.zero, Quaternion.identity, 0);
ネットワーク越しのインスタンス破棄
ネットワーク越しにインスタンスを破棄するためには、以下のメソッドを呼び出します。
// ネットワーク越しに、インスタンスを破棄する
MonobitNetwork.Destroy(obj);