我遇到了一个问题,即客户端无法在服务器上调用命令,但主机可以。 通常问题是 Unity 显示警告,“试图在没有权限的情况下为对象发送命令。”但是,编辑器在通话中没有显示任何调试,只是断开连接。 我有以下代码:
public class PickupManager:NetworkManager
{
private void Update()
{
if (isPlayerInTrigger && Input.GetKeyDown(KeyCode.Q) && hasAuthority && isLocalPlayer)
{
requestObjectPickup();
isPlayerInTrigger = false;
objectinHand = false;
}
}
[Client]
public void requestObjectPickup()
{
CmdPickUpObject();
}
[Server]
private void pickUpObject()
{
NetworkServer.Destroy(pickupObject.gameObject);
}
[Command]
private void CmdPickUpObject()
{
pickUpObject();
}
}
这是它遵循的路径。我尝试在所有调用和函数本身内添加断点。 在调试模式下作为客户端运行时,代码不会转到 CmdPickupObject() 命令,而是转到 requestObjectPickup() 中的下一行并返回。