Почему моя функция Rp c вызывается, когда я запрашиваю свою функцию Cmd? - PullRequest
0 голосов
/ 16 января 2020

Вот моя проблема, когда я запускаю этот код как клиент,

private 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"); }
    } ##

У меня есть эти журналы:

Mes logs

Мои журналы совсем не соответствуют коду! Не могли бы вы помочь мне, пожалуйста?

Спасибо

1 Ответ

0 голосов
/ 16 января 2020

Поскольку Start выполняется Сервером , поэтому он вызывает

RpcAllowTeleportation();

, таким образом, на всех клиентах (таким образом, вы) RpcAllowTeleportation выполняется → вы, как клиент, видите журнал RpcAllowTeleportation.


И наоборот, вы, как клиент, никогда не видите журнал из CmdAllowTeleportations, поскольку это [Command], который выполняется только на сервер → Только сервер увидит журнал CmdAllowTeleportations.

...