Como sincronizar propriedades de GameObject que não são do jogador no UNet / Unity5?

Estou trabalhando e aprendendo alguns conceitos básicos do Unity 5, UNET e redes. Eu fiz um jogo 3D simples, onde você gira e muda as cores dos objetos. Mas quero torná-lo multiplayer agora e estou tendo muitos problemas para descobrir como enviar as alterações pela rede para que todos os jogadores possam ver a cor de um único jogador mudar.

Parte do problema é que tem sido difícil encontrar a resposta usando o mecanismo de rede UNET mais recente. E às vezes me deparo com respostas que são da maneira mais antiga.

Portanto, a principal questão é: como faço para alterar em rede as alterações de propriedade de GameObject? Cor, forma, tamanho, etc.

Aqui está um código que eu tenho agora - e eu tive muitas versões diferentes, então vou postar a atual:

 using UnityEngine;
 using System.Collections;
 using UnityEngine.Networking;

 public class Player_Paint : NetworkBehaviour {

     private int range = 200;
     [SerializeField] private Transform camTransform;
     private RaycastHit hit;
     [SyncVar] private Color objectColor;
     [SyncVar] private GameObject objIdentity;

     void Update () {
         CheckIfPainting();
     }

     void CheckIfPainting(){
         if(Input.GetMouseButtonDown(0)) {
             if (Physics.Raycast (camTransform.TransformPoint (0, 0, 0.5f), camTransform.forward, out hit, range)) {
                 string objName = hit.transform.name;
                 CmdPaint(objName);
             }
         }
     }

     [ClientRpc]
     void RpcPaint(){
         objIdentity.GetComponent<Renderer>().material.color = objectColor;
     }

     [Command]
     void CmdPaint(string name) {
         objIdentity = GameObject.Find (name);  //tell us what was hit
         objectColor = new Color(Random.value, Random.value, Random.value, Random.value);
         RpcPaint ();
     }
 }

Eu tentei várias outras soluções, incluindo escrever um script separado nos objetos cuja cor eu quero mudar e incluir as funções [SyncVar] e hook. Eu também tentei o Debug.Log em cada uma das funções que espero atualizar os objetos nos clientes e eles estão executando com os dados esperados.

Realmente não sei mais o que fazer. Eu sinto que é uma coisa MUITO simples que eu quero fazer, mas não encontrei a sincronização de GameObject de outros jogadores em nenhuma pergunta, tutorial ou outro recurso. Qualquer idéia seria útil, obrigado.

questionAnswers(4)

yourAnswerToTheQuestion