Exemplo n.º 1
0
 /// <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);
     }
 }
Exemplo n.º 2
0
        /// <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>();
                    });
                });
            }
        }