Unity mirror sync between clients

110 Views Asked by At

Im trying a basic multiplayer card game and want to sync the ammount of cards between the player. If a player draws a card the main deck loses one and depending on who drawed the card myDeck or the enmy deck gets one added. At runtime if one player draws a card it works as intended but if the second player also draws a card the counter gets resetted.

public class Player : NetworkBehaviour{ 


private GameObject myHandText;
private GameObject enemyText;
private GameObject deckText;

private int deckCount;
private int myDeck;
private int enemyDeck;



private void Update()
{
        if (Input.GetKeyDown("e"))
        {
            CmdDrawCard();
        }
}
public override void OnStartClient()
{
    base.OnStartClient();
    
    myHandText = GameObject.Find("Me");
    enemyText = GameObject.Find("Emeny");
    deckText = GameObject.Find("Deck");
    
    deckCount = 50;
    myDeck = 0;
    enemyDeck = 0;
    RpcSetText();
}
[Command]
public void CmdDrawCard()
{
   
    RpcSetDeck();
}
[ClientRpc]
void RpcSetDeck()
{   
    if (deckCount > 0)
    {
        deckCount--;
        if (hasAuthority)
        {
            myDeck++;
        }
        else
        {               
            enemyDeck++;
        }
    }
    RpcSetText();
}

[ClientRpc]
void RpcSetText()
{
    enemyText.GetComponent<Text>().text = "Enemy: " + enemyDeck;
    myHandText.GetComponent<Text>().text = "My Deck: " + myDeck;   
    deckText.GetComponent<Text>().text = "Deck: " + deckCount;
}

}

I already tried too SyncVars but it changes nothing. It seems like each Player got two different counters for each variable.

0

There are 0 best solutions below