Beispiel #1
0
        /// <summary>
        /// 分配座位
        /// </summary>
        private UnityTask InitSeat()
        {
            //假设目前是进入的一个房间,房间中是已经有其它玩家的,此时需要先根据情况分配他们的座位在自己客户端上
            var players = _netComponent.WebClient.Room.PlayerList;

            List <UnityTask> tasks = (players.Select(player =>
            {
                player.CustomProperties.TryGetString("Seat", out var seat);
                return(new { player, seat });
            })
                                      .Where(@t1 => !string.IsNullOrEmpty(@t1.seat))
                                      .Select(@t1 => new AVQuery <Player>()
                                              .WhereEqualTo(_netComponent.GetProperty <Player>(p => p.UserId), @t1.player.UserId)
                                              .FirstOrDefaultAsync()
                                              .ContinueToForeground(t =>
            {
                _seats[int.Parse(@t1.seat)].Item2.text = t.Result.PetName;
                //_playerToggle.transform.GetChild(int.Parse(@t1.seat)).GetComponentInChildren<Text>().text =
                //    t.Result.PetName;
                return(0);
            }))).Cast <UnityTask>()
                                     .ToList();

            return(UnityTask.WhenAll(tasks));
        }