Unity UNET-不能使用客户端权限生成对象

时间:2017-09-15 11:37:33

标签: unity5 spawning unet

我遇到一个问题,我无法从客户端生成所选对象。它在主机执行操作时完美运行,但在客户端尝试操作时则不行。当客户端尝试它时,我收到以下错误:" SpawnWithClientAuthority播放器对象不是播放器"。这很令人困惑,因为它在主持人执行时效果很好。

此特定部分的代码如下:

 private void updateAppearance(GameObject newObject)
{

    Destroy(appearance);

    hiderModel.SetActive(false);

    int newObjectNum = propNames.IndexOf(newObject.name);
    activePropIndex = newObjectNum;
    Debug.Log(newObjectNum);


    newObject = (GameObject)Instantiate(props[newObjectNum], playerCam.gameObject.transform);
    newObject.transform.localPosition = new Vector3(0, getObjectHeight(newObjectNum), 0);

    NetworkServer.SpawnWithClientAuthority(newObject, gameObject); <--- This part gives the error

    appearance = newObject;
    appearance.transform.localPosition = new Vector3(0, appearance.transform.localPosition.y, 0);


}

要生成的对象设置了localAuthority,并对其进行了网络转换。 该对象被注册为一个spawnable对象,它是我传递给SpawnWithClientAuthority方法的实例化预制件。据我所知,这应该允许功能工作,但不幸的是它没有。

有关如何解决此问题的任何想法?

提前致谢

1 个答案:

答案 0 :(得分:0)

  

当主机执行该操作时,它完美运行,但是当客户端尝试执行该操作时,

因为只有服务器可以在网络上生成对象。 将代码包装到[Command]以在服务器上执行。