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.