Facepunch

Сеть в Unity3D

Facepunch

Сообщение AlkoTroll 25 ноя 2021, 10:56

Здравствуйте. Есть лист с элементами (игроками). У каждого игрока есть кнопка смены "персонажа". Но по какой-то причине смена происходит локально и изменения не показываются у другого игрока. Как это можно исправить? Как можно сделать обновление элементов листа у всех игроков одновременно?

Синтаксис:
Используется csharp
        [SerializeField] List<PlayerSlot> _listPlayerSlots;

        public override void Init(IGameInitializer initializer)
        {
            _initializer = initializer;
            _listener = new PlayersList_Listener(initializer, this);

            _listPlayerSlots = new List<PlayerSlot>();
            DebugTxt = GameObject.Find("DebugTest").GetComponent<Text>();
            DebugTxt.text = "";
            Transform[] arr = this.gameObject.GetComponentsInChildren<Transform>();


            foreach (Transform t in arr)
            {
                if (t.name.Contains("PlayerSlot"))
                {
                    _listPlayerSlots.Add(new PlayerSlot(t.gameObject, _listPlayerSlots.Count + 1));
                }
            }

            UpdatePlayersList();
        }

        public override void OnFixedUpdate()
        {

        }

        public void UpdatePlayersList()
        {
           

            if (_initializer.SERVER.SERVER_STARTED)
            {
                HandShakenPlayer[] arr = _initializer.SERVER.GetAllHandShakenPlayers();
                UpdateUIList(arr);
            }
            else
            {
                HandShakenPlayer[] arr = _initializer.CLIENT.GetAllHandShakenPlayers();
                UpdateUIList(arr);
            }


        }

        void UpdateUIList(HandShakenPlayer[] handShakenPlayers)
        {
             
            for (int i = 0; i < _listPlayerSlots.Count; i++)
            {
                if (i < handShakenPlayers.Length)
                {
                    _listPlayerSlots[i].Update(handShakenPlayers[i]);
                }
                else
                {
                    _listPlayerSlots[i].Reset();
                }
            }
        }

 
AlkoTroll
UNIт
 
Сообщения: 120
Зарегистрирован: 26 сен 2013, 18:55

Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4