我试着创建一个自定义的大厅,让玩家随机填充有maxPlayers=2的房间,前两个玩家连接并加入一个房间,但当第三个玩家连接并调用GetCustomRoomList时,我得到了这个错误:
GetGameList失败:SQL217: ReturnCode:-2 ( OperationResponse逻辑错误或“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,因为由于某种原因,它失败了。
发布于 2019-03-28 16:05:46
GetCustomRoomList失败,因为它尝试使用null运行SQL查询。
您需要添加一个查询来过滤您试图获取的房间。
如果您想要所有房间,请使用GetRoomList()。
我应该警告你,如果两个玩家在一个房间里,两个新玩家试图加入,两个人都会看到他们需要创建一个新的房间,而你必须同时创建两个同名的房间。
您也不会在已完成的游戏中重用房间名称。
https://stackoverflow.com/questions/55392197
复制相似问题