RoomGUI.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. public void RefreshRoomPlayers(PlayerInfo[] playerInfos)
  14. {
  15. // Debug.Log($"RefreshRoomPlayers: {playerInfos.Length} playerInfos");
  16. foreach (Transform child in playerList.transform)
  17. {
  18. Destroy(child.gameObject);
  19. }
  20. startButton.interactable = false;
  21. bool everyoneReady = true;
  22. foreach (PlayerInfo playerInfo in playerInfos)
  23. {
  24. GameObject newPlayer = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity);
  25. newPlayer.transform.SetParent(playerList.transform, false);
  26. newPlayer.GetComponent<PlayerGUI>().SetPlayerInfo(playerInfo);
  27. if (!playerInfo.ready)
  28. {
  29. everyoneReady = false;
  30. }
  31. }
  32. startButton.interactable = everyoneReady && owner && (playerInfos.Length > 1);
  33. }
  34. public void SetOwner(bool owner)
  35. {
  36. this.owner = owner;
  37. cancelButton.SetActive(owner);
  38. leaveButton.SetActive(!owner);
  39. }
  40. }
  41. }