我遇到一个问题,我无法从客户端生成所选对象。它在主机执行操作时完美运行,但在客户端尝试操作时则不行。当客户端尝试它时,我收到以下错误:" 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方法的实例化预制件。据我所知,这应该允许功能工作,但不幸的是它没有。
有关如何解决此问题的任何想法?
提前致谢
答案 0 :(得分:0)
当主机执行该操作时,它完美运行,但是当客户端尝试执行该操作时,
因为只有服务器可以在网络上生成对象。 将代码包装到[Command]以在服务器上执行。