1

我正在做一个简单的事情,比如有一个 UI 按钮,它发送命令以在多人 (UNET) 环境中打印。鉴于我到目前为止所做的一切,我认为这很容易,但我完全陷入困境和困惑。

我创建了一个新项目进行测试,但我仍然无法让它工作。我能够生成并触发按钮的 onClick 我仍然得到“尝试为未经授权的对象发送命令”。我将 Canvas & 按钮作为预制件,并将脚本附加到 Canvas 预制件下方,然后将画布附加到按钮 OnClick 属性。

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class NM_Script : NetworkBehaviour {

public void DoButton() {

    Cmd_Print ();
}

[Command]
void Cmd_Print() {
    print ("HIT");
}
}

在所有不同的测试之后,我“可能”因为树木而看不到阿甘,我感到非常沮丧。我知道解决方案简单明了,我应该能够解决它,但是....

如果有人可以帮助我一劳永逸地解决这个问题,我将不胜感激。

4

1 回答 1

0

UNET 文档中,

为了安全起见,只能从您的播放器对象发送命令。

从 Unity 5.2 版开始,可以从具有客户端权限的非玩家对象发送命令。这些对象必须是使用 NetworkServer.SpawnWithClientAuthority 生成的,或者具有使用 NetworkIdentity.AssignClientAuthority 设置的权限。从这些对象发送的命令在对象的服务器实例上运行,而不是在客户端的关联播放器对象上运行。

于 2016-10-20T07:57:39.703 回答