- Home /
Why photon room properties not found in lobby?
The player can create a room with certain properties that once created I set them and for lobby so that I can then display them in the lobby.
Function to create room: public void OnCreateRoomButtonClicked() { RoomOptions roomOptions = new RoomOptions(); roomOptions.IsOpen = true; roomOptions.IsVisible = true; string roomName; string gameMap; if (gameMode.Equals("CarMeeting")) { gameMap = carMeetingModeMaps[mapIndex].sceneName; roomName = roomNameCarMeetingModeInputField.text; roomOptions.MaxPlayers = 4; } else { gameMap = racingModeMaps[mapIndex].sceneName; roomName = roomNameRacingModeInputField.text; roomOptions.MaxPlayers = 2; }
if (!CheckIfRoomAlreadyExists(roomName))
{
StartCoroutine(EShowWarning());
}
else
{
roomOptions.CustomRoomProperties = new Hashtable();
roomOptions.CustomRoomProperties.Add("GameMap", gameMap);
roomOptions.CustomRoomProperties.Add("GameMode", gameMode);
roomOptions.CustomRoomProperties.Add("RaceMode", raceMode);
roomOptions.CustomRoomProperties.Add("InRace", false);
string[] customLobbyProperties = new string[4];
customLobbyProperties[0] = "GameMap";
customLobbyProperties[1] = "GameMode";
customLobbyProperties[2] = "RaceMode";
customLobbyProperties[3] = "InRace";
roomOptions.CustomRoomPropertiesForLobby = customLobbyProperties;
PhotonNetwork.CreateRoom(roomName, roomOptions, null, null);
}
}
Function display rooms in lobby:
public override void OnRoomListUpdate(List roomInfo) { Debug.Log("Rooms found " + roomInfo.Count); bool roomFound = false;
foreach (RoomInfo room in roomInfo)
{
if (room.RemovedFromList)
{
int index = roomUIs.FindIndex(x => x.roomNameString.Equals(room.Name));
if (index != -1)
{
Destroy(roomUIs[index].gameObject);
roomUIs.RemoveAt(index);
}
}
else
{
CMRoomUI cacheRoomUI = roomUIs.Find(x => x.roomNameString.Equals(room.Name));
if (cacheRoomUI != null)
{
if (room.CustomProperties["GameMode"].ToString().Equals("CarMeeting"))
cacheRoomUI.Check(room.Name, (room.PlayerCount + "/" + room.MaxPlayers).ToString(), room.CustomProperties["GameMap"].ToString(), room.CustomProperties["GameMode"].ToString());
else
cacheRoomUI.Check(room.Name, (room.PlayerCount + "/" + room.MaxPlayers).ToString(), room.CustomProperties["GameMap"].ToString(), room.CustomProperties["GameMode"].ToString()
, room.CustomProperties["RacingMode"].ToString());
}
else
{
if (room.IsOpen)
{
CMRoomUI roomUI = Instantiate(roomUIPrefab.gameObject, roomUIParent).GetComponent<CMRoomUI>();
roomUIs.Add(roomUI);
if (room.CustomProperties["GameMode"].ToString().Equals("CarMeeting"))
roomUI.Check(room.Name, (room.PlayerCount + "/" + room.MaxPlayers).ToString(), room.CustomProperties["GameMap"].ToString(), room.CustomProperties["GameMode"].ToString());
else
cacheRoomUI.Check(room.Name, (room.PlayerCount + "/" + room.MaxPlayers).ToString(), room.CustomProperties["GameMap"].ToString(), room.CustomProperties["GameMode"].ToString()
, room.CustomProperties["RaceMode"].ToString());
}
}
}
}
if (roomUIs.Count > 0) roomFound = true;
noRoomTextObj.SetActive(!roomFound);
}
After I create a room if another player connects to the looby, I display the cameras visible with those properties, but the property "RaceMode" does not exist.