Я хочу создать многопользовательское приложение с помощью Photon (Pun2). После того, как игрок входит в комнату, я хочу скрыть некоторые кнопки и отобразить другие для всех игроков в этой комнате. На данный момент у меня есть такая функция:
public override void OnPlayerEnteredRoom(Player newPlayer)
{
print(newPlayer); // #02
if (PhotonNetwork.CurrentRoom.PlayerCount == 2 && PhotonNetwork.IsMasterClient)
{
print(PhotonNetwork.CurrentRoom.PlayerCount + "/2 Starting game...");
searchingBtn.SetActive(false); // hide this button
findMatchBtn.SetActive(false); // hide this button
scanningBtn.SetActive(true); // display this button
}
}
Но это не сработает, потому что только у одного из двух игроков кнопки изменятся, у другого они останутся прежними.
Я видел несколько примеров в Интернете, где в этой функции OnPlayerEnteredRoom
она называется PhotonNetwork.LoadLevel(scene_index)
, но в этот момент я не хочу загружать другую сцену, я хочу остаться в текущей сцене и просто скрыть / отобразить некоторые кнопки. Это вообще возможно?
РЕДАКТИРОВАТЬ: вот окончательная версия
public override void OnJoinedRoom()
{
Debug.Log("You joined the room.");
Debug.Log(PhotonNetwork.CurrentRoom.PlayerCount);
Debug.Log(PhotonNetwork.IsMasterClient);
UpdateButtons();
}
public override void OnPlayerEnteredRoom(Player newPlayer)
{
Debug.Log("Other players joined the room.");
if (PhotonNetwork.CurrentRoom.PlayerCount > 1 && PhotonNetwork.IsMasterClient)
{
Debug.Log(PhotonNetwork.CurrentRoom.PlayerCount + "/2 Starting game...");
UpdateButtons();
}
}
private void UpdateButtons()
{
searchingBtn.SetActive(false); // hide this button
findMatchBtn.SetActive(false); // hide this button
scanningBtn.SetActive(true); // display this button
}