为什么当我请求我的 Cmd 函数时我的 Rpc 函数被调用?

Why is my Rpc function called when I asked for my Cmd function?

这是我的问题,当我 运行 这段代码作为客户端时,

私有 IEnumerator Start()

    {
        if (isServer)
        {
            Debug.Log("je suis le serveur");
            RpcAllowTeleportation();
        }
        else
        {
            Debug.Log("Je suis le client");
            CmdAllowTeleportations();
        }
    }

    [Command]
    public void CmdAllowTeleportations()
    {
        Debug.Log("C'est passé par la fonction CmdAllowTeleportation");
        if (!isLocalPlayer) { Teleportation.GetComponent<Teleport>().enabled = false; Debug.Log("cmd : it hasn't the authority"); }
        else { Debug.Log("cmd : It has the authority"); }
    }

    [ClientRpc]
    void RpcAllowTeleportation()
    {

        Debug.Log("C'est passé par la fonction RpcAllowTeleportation");
        if (!hasAuthority) { Teleportation.GetComponent<Teleport>().enabled = false; Debug.Log("rpc : it hasn't the authority"); }
        else { Debug.Log("rpc : It has the authority"); }
    } ##

我有这些日志:

我的日志与代码完全不一致!你能帮帮我吗?

谢谢

因为Start服务器执行所以它调用

RpcAllowTeleportation();

因此在所有客户端上(所以你)RpcAllowTeleportation被执行→您作为客户端看到 RpcAllowTeleportation.

的日志

反之亦然,作为客户端,您永远不会看到来自 CmdAllowTeleportations 的日志,因为它是 [Command],仅在 服务器 上执行 →只有服务器会看到 CmdAllowTeleportations.

的日志