如何获得指示其他客户端执行功能的权限

时间:2019-05-06 05:22:58

标签: unity3d networking authority

本学期为我的学位获得最高荣誉的纸牌游戏(希望如此)

使用命令->调用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;
    }

0 个答案:

没有答案