私はネットワークに小さな2人のユニティゲームをしようとしています。これはネットワーキングで初めてのことですので、私が間違っていることについて私を修正してください。私は、ゲームのメインメニューで、プレーヤーがFind Matchボタンをクリックすることができるシンプルなマッチメイキングサービスを作ろうとしています。これにより、次の関数が実行されます。リスンポートはすでに使用されていますか? Unityネットワークエラー
private HostData[] hostList;
private const string typeName = "UniqueGameName";
private const string gameName = "RoomName";
public void FindMatch() {
RefreshHostList();
if (hostList != null) {
JoinServer(hostList[0]);
} else {
StartServer();
}
}
この関数では、対応するメソッドが呼び出されます。
private void RefreshHostList()
{
MasterServer.RequestHostList(typeName);
}
void OnMasterServerEvent(MasterServerEvent msEvent)
{
if (msEvent == MasterServerEvent.HostListReceived)
hostList = MasterServer.PollHostList();
}
private void JoinServer(HostData hostData)
{
Network.Connect(hostData);
}
private void StartServer()
{
Network.InitializeServer(2, 25000, !Network.HavePublicAddress());
MasterServer.RegisterHost(typeName, gameName);
}
プレイヤーがFind Matchをクリックすると、ホストリストがリフレッシュされます。ホストを見つけたら、サーバーに参加してマッチを開始します。そうでなければ、それはそれ自身のサーバーを開始し、別のプレーヤーを待つでしょう。これをテストすると、Find Matchをクリックした最初のプレイヤーはサーバーを起動できますが、2番目のプレーヤーはエラーメッセージ "...リッスンポートは既に使用中ですか?"を受け取ります。プログラムをデバッグしてステップ実行すると、最初のプレーヤーがサーバーの作成と登録に成功した場合でも、2番目のプレーヤーのhostListは常にnullになります。
SingalRはユニティで動作しますか? –
SingalRは.NETとUnityで動作します。 – realnero
例 - http://stackoverflow.com/questions/32009293/signalr-websocketsharp-in-unity3d – realnero