【问题标题】:(Unity) Network.Instantiate doesn't get called on all clients(Unity) Network.Instantiate 不会在所有客户端上调用
【发布时间】:2016-11-07 17:17:51
【问题描述】:

我正在从事一个小型网络项目,并且在通过网络实例化对象时遇到了麻烦。当一个人加入服务器时我没有问题...当第二个人加入时我会遇到问题 - 第二个人仅在第一个人的客户端上实例化,而在第二个玩家的客户端中看不到另一个人。我知道 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);
    }
}

【问题讨论】:

    标签: networking unity3d instantiation multiplayer unity-networking


    【解决方案1】:

    我认为这是一个客户端问题。每当第二个玩家连接时,您应该调用另一个函数来获取服务器中的每个玩家并在第二个玩家的视图中生成它们。类似于SpawnPlayer()的函数。

    【讨论】:

      猜你喜欢
      • 2018-02-03
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多