上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Unityはマッチングを手軽に行うための機能を提供してくれて非常にありがたいのだが
バグがあるようで今回の制作で少し苦しめられたのでメモしておく

サーバーから送られてくるルームリストの情報(HostData)には、
ルームに何人接続しているかの情報(connectedPlayers)が含まれているが、この値が1しか返ってこない。
サーバープレイヤーのみでも1。 3人接続しても1が返ってきた。
Unity HostData connectedPlayers always return 1
週が変わるとなおるらしい。 クレイジー

接続人数を調べられないと、ルームに参加可能か判定が出来ないのでなんとかする必要がある。

サーバープレイヤー側で、クライアントプレイヤーが接続してきたら
MasterServer.UnregisterHostでルーム登録を取り消す方法を試す。
MasterServer.UnregisterHost() seemingly does not work?
失敗。
サーバーを閉じないとルームの登録解除が出来ない・・・?
サーバーを閉じるとマッチング相手との接続も切れてしまうため、この手法も使えない。

じゃあどうすんの?

MasterServer.RegisterHost(gameTypeName: string, gameName: string, comment: string = "");を使う。
RegisterHostはルーム登録を行う関数だが、
既に登録されている場合は情報を上書きするようになっているようだ。
comment引数に接続情報を入れてルームを登録し直すと良い。
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://perillasoft.blog75.fc2.com/tb.php/63-61bfacee
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。