Как получить полномочия, чтобы поручить другому клиенту выполнять функции - PullRequest
0 голосов
/ 06 мая 2019

карточная игра для замкового камня для моей степени в этом семестре (надеюсь?)

Получение «Попытка отправить команду для объекта без полномочий» при использовании команды -> для вызова RPC -> для инструктирования другогоклиент, чтобы вызвать их функцию, чтобы их player2 добавить карту в свою руку.

У меня много команд и RPC, сделанных аналогичным образом для синхронизации переменных и досок для каждого игрока, и я обеспокоен тем, что у них всех будет эта проблема.

Он вызывается в сценарии playerConnectionObject с идентификатором сети.Это кусочки.

    public void DrawCard()
    {
        mainCam = FindObjectOfType<Camera>();
        string drawnCardName = mainCam.GetComponent<P1DeckController>().p1Deck[0];
        mainCam.GetComponent<P1DeckController>().p1Deck.RemoveAt(0);
        mainCam.GetComponent<P1DeckController>().SpawnCard(drawnCardName);
        mainCam.GetComponent<P1DeckController>().drawnCard.transform.parent = mainCam.GetComponent<GameVars>().p1Hand.transform;
        mainCam.GetComponent<P1DeckController>().drawnCard.GetComponent<CardActions>().canPlay = true;
        mainCam.GetComponent<P1DeckController>().drawnCard.GetComponent<CardStats>().inHand = true;

        CmdIncreaseEnemyHandSize(); //instructs server to instruct other client to add a card to their enemy's hand
    }

    [Command]
    public void CmdIncreaseEnemyHandSize()
    {
        RpcIncreaseEnemyHandSize();
    }

    [ClientRpc]
    void RpcIncreaseEnemyHandSize()
    {
        // mainCam.GetComponent<P1DeckController>().FoeDrawCard();
        string drawnCardName = mainCam.GetComponent<P2DeckController>().p2Deck[0];
        mainCam.GetComponent<P2DeckController>().p2Deck.RemoveAt(0);
        mainCam.GetComponent<P2DeckController>().SpawnCard(drawnCardName);
        mainCam.GetComponent<P2DeckController>().drawnCard.transform.parent = mainCam.GetComponent<GameVars>().p2Hand.transform;
        mainCam.GetComponent<P2DeckController>().drawnCard.GetComponent<CardStats>().faceUp = false;
    }
...