为什么几次连接后PhotonNetwork GetCustomRoomList失败?

时间:2019-03-28 07:28:14

标签: c# unity3d photon

我正在尝试创建一个自定义大厅,让玩家随机填充具有maxPlayers = 2的房间,前2个玩家连接并加入一个房间,但是当第三个玩家连接并调用GetCustomRoomList时,出现此错误:

GetGameList失败:OperationResponse 217:ReturnCode:-2(SQL逻辑错误或“ LIMIT”附近缺少数据库:语法错误)。参数:{}

我正在做的事情是首先尝试加入该自定义大厅内的随机房间,如果失败,则创建一个新房间。

我开始这样连接:

TypedLobby lobbyData = new TypedLobby ("Proto01Lobby", LobbyType.SqlLobby);

PhotonNetwork.GameVersion = GAME_VERSION;
PhotonNetwork.ConnectUsingSettings ();

然后我尝试加入随机房间:

public override void OnConnectedToMaster()
{
   Debug.Log ("Connetected!");
   PhotonNetwork.JoinRandomRoom (null, 2, MatchmakingMode.FillRoom, lobbyData, null, null);
}

如果失败,我会尝试获取房间列表,然后根据大厅中的房间数量创建一个唯一的房间名称:

public override void OnJoinRandomFailed(short returnCode, string message)
{
   Debug.Log ("Failed to connect to random room, Create a New Room");
   PhotonNetwork.GetCustomRoomList (lobbyData, null);
}

public override void OnRoomListUpdate (List<RoomInfo> roomList)
{
   Debug.Log ("Amount of rooms in lobbby: "+roomList.Count);
   string roomName = "CanvasProto" + roomList.Count;
   Debug.Log ("Create room: "+roomName);

   RoomOptions options = new RoomOptions ();
   options.MaxPlayers = 2;
   PhotonNetwork.CreateRoom(roomName, options, lobbyData, null);
}

但是当第三个玩家连接时,他/她就永远不会到达OnRoomListUpdate,因为它由于某种原因而失败。

1 个答案:

答案 0 :(得分:0)

GetCustomRoomList失败,因为它试图运行带有null的SQL查询。

您需要添加查询以过滤要获取的房间。

如果您希望所有房间都使用GetRoomList()。

我应该警告您,如果2个玩家位于一个房间中,并且有2个新玩家尝试加入,则两个都将看到他们需要创建一个新房间,而您我必须向客户尝试在2个房间中创建相同名称的房间在同一时间。

您也不会在完成的游戏中重复使用房间名称。