[ISSUE] Update sync var with a Command
I'm developing a multiplayer game with Unity. I have a gemobject on the play scene with a script named Tempus (the responsable of counting the number of players that are joining the game) and atached to this gameobject the component Network Identity set to Local Player Authority. The script Tempus:
public class Tempus : NetworkBehaviour
{
[SyncVar(hook = "OnChangeValue")]
public int PlayerNum;
[HideInInspector] public bool DecreaseNum = false;
private void Start()
{
//PlayerNum = 0;
}
public void Update(){}
[Command]
public void CmdAddPlayer(int value)
{
PlayerNum += value;
}
[Command]
public void CmdDecreasePlayerNum(int value)
{
PlayerNum = PlayerNum - value;
}
void OnChangeValue(int value)
{
PlayerNum = value;
}
}
CmdAdPlayer is called in other script, every time that a player joins the game. What I want to do is to decrease the PlayerNum (the syncvar from Tempus) every time that a player disconects from the game. For that I have created a script that is contained on the player:
public class ExitGame : NetworkBehaviour
{
Tempus temp;
private NetworkManager networkManager;
NamesManager namesManager;
private void Start()
{
temp = FindObjectOfType<Tempus>();
namesManager = GetComponent<NamesManager>();
networkManager = NetworkManager.singleton;
}
// Checks if the ESC key is pressed in order to leave the current room
void Update ()
{
if (Input.GetKeyUp(KeyCode.Escape))
{
//decrease player num on server
if(isLocalPlayer)
{
temp.CmdDecreasePlayerNum(1);
}
//ExitRoom();
}
}
private void ExitRoom()
{
MatchInfo matchInfo = networkManager.matchInfo;
networkManager.matchMaker.DropConnection(matchInfo.networkId, matchInfo.nodeId, 0, networkManager.OnDropConnection);
networkManager.StopClient();
}
}
As I read on many posts only a Command executed from a client is able to modify a syncvar but there is no way to change the value on the server.
What I'm doing wrong?
Thanks in advance.
PS: I'm on the 2017.4.23f1 Unity version
Your answer
Follow this Question
Related Questions
How to create several spawnpoints without spawning at the same place in Photon 2 Answers
MultiplayerFPS - database error 1 Answer
Can't connect to server by android phone 0 Answers
Failed receiving RPC batch index 0 Answers
Unity and Photon Question 0 Answers