В поисках другого сетевого игрока unity unet

У меня проблема с получением другого сетевого плеера, который я хочу хранить в таком виде.

void Start ()
{
    GameObject[] players = GameObject.FindGameObjectsWithTag ("Player");
    for (int i = 0; i < players.Length; i++) {
        if (players [i].GetComponent <NetworkIdentity> ().isLocalPlayer) {
            minePlayer = players [i];
        }
        if (!players [i].GetComponent <NetworkIdentity> ().isLocalPlayer) {
            oppenentPlayer = players [i];
        }
    }
}

на сервере я нахожу только своего игрока, а в другом игроке я нахожу оба, но не правильно, спасибо за вашу помощь


person Aqib Nawaz    schedule 02.11.2017    source источник
comment
@ sudoman281 Пожалуйста, помогите мне в этом   -  person Aqib Nawaz    schedule 02.11.2017


Ответы (1)


Название вашего вопроса и ваш код предполагают, что в игре Unity участвуют только два игрока. В игре может быть до 10 игроков, и вы тоже должны справиться с ними. Вам нужно найти игроков из PlayerController, и это можно получить с помощью NetworkManager.client.connection.playerControllers. Вы также должны проверить IsValid, чтобы убедиться, что PlayerController имеет подключенный к нему Player.

Вот как вы можете найти всех игроков в сети:

NetworkManager networkManager = NetworkManager.singleton;

List<PlayerController> pc = networkManager.client.connection.playerControllers;

for (int i = 0; i < pc.Count; i++)
{

    if (pc[i].IsValid)
        Debug.Log(pc[i].gameObject.name);
}
person Programmer    schedule 02.11.2017
comment
в игре только 2 игрока, не более 2 могут b и спасибо за помощь - person Aqib Nawaz; 02.11.2017
comment
Неважно, сколько игроков. Он все равно должен работать. Получите первые два IsValid объекта, затем break из цикла. - person Programmer; 02.11.2017