(Unity) Network.Instantiate вызывается не на всех клиентах

Я работаю над небольшим сетевым проектом, и у меня возникли проблемы с созданием экземпляров объектов по сети. У меня нет проблем, когда один человек присоединяется к серверу... У меня возникают проблемы, когда присоединяется второй человек - этот второй человек создается только на клиенте первого человека, а другой человек не виден в клиенте второго игрока. Я знаю, что Network.Instatiate должен вызываться для всех клиентов, даже когда они присоединяются позже, но у меня этого просто не происходит... Взгляните:

private void SpawnPlayer()
{
    GameObject spawnPoints = GameObject.Find("Spawns");
    GameObject player = (GameObject)Network.Instantiate(playerPrefab, spawnPoints.transform.GetChild(Random.Range(0, spawnPoints.transform.childCount - 1)).transform.position, Quaternion.identity,0);
    //This is just to assign the current player to the shoot button so it knows which one to shoot from
    if (player.GetComponent<NetworkView>().viewID.isMine)
    {
        EventTrigger trigger = shootButton.GetComponent<EventTrigger>();
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = EventTriggerType.PointerDown;
        currentPlayer = player.GetComponent<Player>();
        UnityEngine.Events.UnityAction<BaseEventData> call = new UnityEngine.Events.UnityAction<BaseEventData>(ShootEventMethod);
        entry.callback.AddListener(call);
        trigger.triggers.Add(entry);
    }
}

введите здесь описание изображения


person Leonard Parisi    schedule 07.11.2016    source источник


Ответы (1)


Я думаю, что это проблема на стороне клиента. Всякий раз, когда второй игрок подключается, вы должны вызывать другую функцию, которая получает каждого игрока на сервере и порождает их в представлении второго игрока. Функция, аналогичная SpawnPlayer().

person DigitalPancake    schedule 07.11.2016