Client can't answer to Server, Command methods don't work, ClientRPC do
I'm making a program where you can change the materials of an object by clicking a button. It must work with multiple devices, therefore a variable is synchronized.
It works when the server presses a button, but not when the client does it.
gameState is the synchronized variable, which synchronizes the state and allows to change an object at a time.
 public enum GameState
 {
     Offline,
     Connecting,
     Lobby,
     Countdown,
     WaitingForRolls,
     Scoring,
     GameOver,   // my part is next
     BrownTree,
     GreenTree,
     PurpleTree,
     MetalBox,
     WoodenBox,
     BaseChair,
     Chair1,
     Chair2,
     Chair3,
     Chair4,
     Chair5,
     Chair6,
     Chair7,
     Chair8,
     Chair9,
     Chair10
 }
 [SyncVar]
     public GameState gameState;
 
               Here are the buttons that change the materials
 if (GUILayout.Button("Change tree Color", GUILayout.Width(100), GUILayout.Height(60)))
                 {
                     egs = FindObjectOfType<ExampleGameSession>();
 
                     if(egs.gameState == GameState.BrownTree)
                     {
                         egs.gameState = GameState.GreenTree;
                     }
                     else if(egs.gameState == GameState.GreenTree)
                     {
                         egs.gameState = GameState.PurpleTree;
                     }
                     else
                     {
                         egs.gameState = GameState.BrownTree;
                     }
                 }
                 GUI.color = Color.cyan;
         if (GUILayout.Button ("Change box material", GUILayout.Width (100), GUILayout.Height (60))) 
                 {
                     egs = FindObjectOfType<ExampleGameSession> ();
 
                     if (egs.gameState == GameState.MetalBox) 
                     {
                         egs.gameState = GameState.WoodenBox;
                     } 
                     else if (egs.gameState == GameState.WoodenBox) 
                     {
                         egs.gameState = GameState.MetalBox;
                     } 
                     else 
                     {
                         egs.gameState = GameState.MetalBox;
                     }
                 }
                 GUI.color = Color.green;
 if (GUILayout.Button ("Change chair material", GUILayout.Width (100), GUILayout.Height (60))) 
                 {
                     egs = FindObjectOfType<ExampleGameSession> ();
 
                     if (egs.gameState == GameState.BaseChair) 
                     {
                         egs.gameState = GameState.Chair1;
                     } 
                     else if (egs.gameState == GameState.Chair1) 
                     {
                         egs.gameState = GameState.Chair2;
                     } 
                     else if (egs.gameState == GameState.Chair2)
                     {
                         egs.gameState = GameState.Chair3;
                     }
                     else if (egs.gameState == GameState.Chair3)
                     {
                         egs.gameState = GameState.Chair4;
                     }
                     else if (egs.gameState == GameState.Chair4)
                     {
                         egs.gameState = GameState.Chair5;
                     }
                     else if (egs.gameState == GameState.Chair5)
                     {
                         egs.gameState = GameState.Chair6;
                     }
                     else if (egs.gameState == GameState.Chair6)
                     {
                         egs.gameState = GameState.Chair7;
                     }
                     else if (egs.gameState == GameState.Chair7)
                     {
                         egs.gameState = GameState.Chair8;
                     }
                     else if (egs.gameState == GameState.Chair8)
                     {
                         egs.gameState = GameState.Chair9;
                     }
                     else if (egs.gameState == GameState.Chair9)
                     {
                         egs.gameState = GameState.Chair10;
                     }
                     else if (egs.gameState == GameState.Chair10)
                     {
                         egs.gameState = GameState.BaseChair;
                     }
                     else
                     {
                         egs.gameState = GameState.BaseChair;
                     }
                 }
 
               Here are the Rpc and Cmd methods :
 [ClientRpc]
     public void RpcBrownTree()
     {
         GameObject tree1 = GameObject.Find ("tree1");
         GameObject tree2 = GameObject.Find ("tree2");
         GameObject tree3 = GameObject.Find ("tree3");
         tree1.GetComponent<SpriteRenderer>().enabled = true;
         tree2.GetComponent<SpriteRenderer>().enabled = false;
         tree3.GetComponent<SpriteRenderer>().enabled = false;
     }
 
     [ClientRpc]
     public void RpcGreenTree()
     {
         GameObject tree1 = GameObject.Find ("tree1");
         GameObject tree2 = GameObject.Find ("tree2");
         GameObject tree3 = GameObject.Find ("tree3");
         tree1.GetComponent<SpriteRenderer>().enabled = false;
         tree2.GetComponent<SpriteRenderer>().enabled = true;
         tree3.GetComponent<SpriteRenderer>().enabled = false;
     }
 
     [ClientRpc]
     public void RpcPurpleTree()
     {
         GameObject tree1 = GameObject.Find ("tree1");
         GameObject tree2 = GameObject.Find ("tree2");
         GameObject tree3 = GameObject.Find ("tree3");
         tree1.GetComponent<SpriteRenderer>().enabled = false;
         tree2.GetComponent<SpriteRenderer>().enabled = false;
         tree3.GetComponent<SpriteRenderer>().enabled = true;
     }
 
     [ClientRpc]
     public void RpcMetalBox()
     {
         GameObject box = GameObject.Find ("Cube");
         ChangeMaterial cm = box.GetComponent<ChangeMaterial> ();
         cm.rend.sharedMaterial = cm.material[0];
     }
 
     [ClientRpc]
     public void RpcWoodenBox()
     {
         GameObject box = GameObject.Find ("Cube");
         ChangeMaterial cm = box.GetComponent<ChangeMaterial> ();
         cm.rend.sharedMaterial = cm.material[1];
     }
 
     [ClientRpc]
     public void RpcBaseChair()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[0];
     }
 
     [ClientRpc]
     public void RpcChair1()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[1];
     }
 
     [ClientRpc]
     public void RpcChair2()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[2];
     }
 
     [ClientRpc]
     public void RpcChair3()
     {
         GameObject chair = GameObject.Find("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[3];
     }
 
     [ClientRpc]
     public void RpcChair4()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[4];
     }
 
     [ClientRpc]
     public void RpcChair5()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[5];
     }
 
     [ClientRpc]
     public void RpcChair6()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[6];
     }
 
     [ClientRpc]
     public void RpcChair7()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[7];
     }
 
     [ClientRpc]
     public void RpcChair8()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[8];
     }
 
     [ClientRpc]
     public void RpcChair9()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[9];
     }
 
     [ClientRpc]
     public void RpcChair10()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[10];
     }
 
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
     [Command]
     public void CmdBrownTree()
     {
         GameObject tree1 = GameObject.Find ("tree1");
         GameObject tree2 = GameObject.Find ("tree2");
         GameObject tree3 = GameObject.Find ("tree3");
         tree1.GetComponent<SpriteRenderer>().enabled = true;
         tree2.GetComponent<SpriteRenderer>().enabled = false;
         tree3.GetComponent<SpriteRenderer>().enabled = false;
     }
 
     [Command]
     public void CmdGreenTree()
     {
         GameObject tree1 = GameObject.Find ("tree1");
         GameObject tree2 = GameObject.Find ("tree2");
         GameObject tree3 = GameObject.Find ("tree3");
         tree1.GetComponent<SpriteRenderer>().enabled = false;
         tree2.GetComponent<SpriteRenderer>().enabled = true;
         tree3.GetComponent<SpriteRenderer>().enabled = false;
     }
 
     [Command]
     public void CmdPurpleTree()
     {
         GameObject tree1 = GameObject.Find ("tree1");
         GameObject tree2 = GameObject.Find ("tree2");
         GameObject tree3 = GameObject.Find ("tree3");
         tree1.GetComponent<SpriteRenderer>().enabled = false;
         tree2.GetComponent<SpriteRenderer>().enabled = false;
         tree3.GetComponent<SpriteRenderer>().enabled = true;
     }
 
     [Command]
     public void CmdMetalBox()
     {
         GameObject box = GameObject.Find ("Cube");
         ChangeMaterial cm = box.GetComponent<ChangeMaterial> ();
         cm.rend.sharedMaterial = cm.material[0];
     }
 
     [Command]
     public void CmdWoodenBox()
     {
         GameObject box = GameObject.Find ("Cube");
         ChangeMaterial cm = box.GetComponent<ChangeMaterial> ();
         cm.rend.sharedMaterial = cm.material[1];
     }
 
     [Command]
     public void CmdBaseChair()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[0];
     }
 
     [Command]
     public void CmdChair1()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[1];
     }
 
     [Command]
     public void CmdChair2()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[2];
     }
 
     [Command]
     public void CmdChair3()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[3];
     }
 
     [Command]
     public void CmdChair4()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[4];
     }
 
     [Command]
     public void CmdChair5()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[5];
     }
 
     [Command]
     public void CmdChair6()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[6];
     }
 
     [Command]
     public void CmdChair7()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[7];
     }
 
     [Command]
     public void CmdChair8()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[8];
     }
 
     [Command]
     public void CmdChair9()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[9];
     }
 
     [Command]
     public void CmdChair10()
     {
         GameObject chair = GameObject.Find ("WoodenChair").transform.Find("chair").gameObject;
         ChangeMaterial cm = chair.GetComponent<ChangeMaterial>();
         cm.rend.sharedMaterial = cm.material[10];
     }
 
               And here is the relevant part of the Update in the ExampleGameSession class.
 void Update()
     { if (gameState == GameState.BrownTree) {
             RpcBrownTree ();
                             CmdBrownTree ();
         }
         if (gameState == GameState.GreenTree) {
             RpcGreenTree ();
                             CmdGreenTree ();
         }
         if (gameState == GameState.PurpleTree) {
             RpcPurpleTree();
                             CmdPurpleTree();
         }
         if (gameState == GameState.MetalBox) {
             RpcMetalBox ();
                             CmdMetalBox ();
         }
         if (gameState == GameState.WoodenBox) {
             RpcWoodenBox ();
                             CmdWoodenBox ();
         }
         if (gameState == GameState.BaseChair) {
             RpcBaseChair ();
                             CmdBaseChair ();
         }
         if (gameState == GameState.Chair1) {
             RpcChair1 ();
                             CmdChair1 ();
         }
         if (gameState == GameState.Chair2) {
             RpcChair2 ();
                             CmdChair2 ();
         }
         if (gameState == GameState.Chair3) {
             RpcChair3 ();
                             CmdChair3 ();
         }
         if (gameState == GameState.Chair4) {
             RpcChair4 ();
                             CmdChair4 ();
         }
         if (gameState == GameState.Chair5) {
             RpcChair5 ();
                             CmdChair5 ();
         }
         if (gameState == GameState.Chair6) {
             RpcChair6 ();
                             CmdChair6 ();
         }
         if (gameState == GameState.Chair7) {
             RpcChair7 ();
                             CmdChair7 ();
         }
         if (gameState == GameState.Chair8) {
             RpcChair8 ();
                             CmdChair8 ();
         }
         if (gameState == GameState.Chair9) {
             RpcChair9 ();
                             CmdChair9 ();
         }
         if (gameState == GameState.Chair10) {
             RpcChair10 ();
                             CmdChair10 ();    }
 
               The Rpc methods execute. Whenever the server changes the material of an object, it is synchronized with the client. But the client cannot change the materials at all.
I have tried also tried to write the Cmd methods as CmdBrownTree() {RpcBrownTree();} but that did not work either.
The Command methods don't work at all. What am I doing wrong ?
Your answer
 
             Follow this Question
Related Questions
How to command dedicated server 1 Answer
Network Not Updating On All Clients PLEASE HELP!!! 0 Answers
Unet: [Command] not running 1 Answer
How to change turns on button click using HLAPI? 0 Answers
UDPClient can't receive and send ? 0 Answers