/// <summary> /// 创建座位 /// </summary> private void CreateSeat() { _seats = new List <Tuple <Toggle, Text> >(); for (int i = 1; i < _netComponent.WebClient.Room.MaxPlayerCount; i++) { GameObject.Instantiate(_seatToggle, _seatToggles); //此时创建完毕,但是在UI中顺序极有可能是乱的,这就导致第N个位置,实际上我们无法知晓它是第几个生成的了。 } //所以在此通过UI顺序,我们重新找一次. for (int i = 0; i < _seatToggles.childCount; i++) { var tempToggle = _seatToggles.transform.GetChild(i).GetComponent <Toggle>(); tempToggle.name = i.ToString(); _seats.Add(new Tuple <Toggle, Text>(tempToggle, tempToggle.GetComponentInChildren <Text>())); _uiComponent.AddListener(tempToggle, OnSeatToggleSelect); } }
/// <summary> /// 刷新房间列表 /// </summary> /// <param name="lobbyRooms"></param> private void UpdateRoomItem(List <LobbyRoom> lobbyRooms) { if (lobbyRooms == null || lobbyRooms.Count == 0) { return; } var gridChildren = _grid.GetChildrenT(); gridChildren.ForEach(t => t.gameObject.SetActive(true)); var delete = gridChildren.Select(p => p.name).Except(lobbyRooms.Select(t => t.RoomName)).ToList(); var create = lobbyRooms.Select(p => p.RoomName).Except(gridChildren.Select(t => t.name)).ToList(); for (int i = 0; i < delete.Count; i++) { GameObject.DestroyImmediate(_grid.Find <Transform>(delete[i])); } foreach (var t in create) { var item = GameObject.Instantiate(_roomItem, _grid); item.gameObject.SetActive(true); item.name = t; var room = lobbyRooms.FirstOrDefault(p => p.RoomName == t); if (room == null) { GameObject.DestroyImmediate(item.gameObject); continue; } var roomText = item.GetComponentInChild <Text>("RoomText"); roomText.text = room.CustomRoomProperties.GetString("RoomName"); var playerText = item.GetComponentInChild <Text>("PlayerText"); playerText.text = room.CustomRoomProperties.GetString("PetName"); var joinBtn = item.GetComponentInChild <Button>("JoinBtn"); _uiComponent.AddListener(joinBtn, btn => { _netComponent.WebClient.JoinRoom(btn.transform.parent.name).ContinueToForeground(n => { _uiComponent.CloseView <GameLobbyView>(); _uiComponent.SyncOpenView <RoomView>(); }); }); } }