RoomGUI.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace Mirror.Examples.MultipleMatch
  4. {
  5. public class RoomGUI : MonoBehaviour
  6. {
  7. public GameObject playerList;
  8. public GameObject playerPrefab;
  9. public GameObject cancelButton;
  10. public GameObject leaveButton;
  11. public Button startButton;
  12. public bool owner;
  13. [ClientCallback]
  14. public void RefreshRoomPlayers(PlayerInfo[] playerInfos)
  15. {
  16. foreach (Transform child in playerList.transform)
  17. Destroy(child.gameObject);
  18. startButton.interactable = false;
  19. bool everyoneReady = true;
  20. foreach (PlayerInfo playerInfo in playerInfos)
  21. {
  22. GameObject newPlayer = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity);
  23. newPlayer.transform.SetParent(playerList.transform, false);
  24. newPlayer.GetComponent<PlayerGUI>().SetPlayerInfo(playerInfo);
  25. if (!playerInfo.ready)
  26. everyoneReady = false;
  27. }
  28. startButton.interactable = everyoneReady && owner && (playerInfos.Length > 1);
  29. }
  30. [ClientCallback]
  31. public void SetOwner(bool owner)
  32. {
  33. this.owner = owner;
  34. cancelButton.SetActive(owner);
  35. leaveButton.SetActive(!owner);
  36. }
  37. }
  38. }