¿Cómo sincronizo las propiedades de GameObject que no son jugadores en UNet / Unity5?

Estoy trabajando y aprendiendo algunos conceptos básicos de Unity 5, UNET y redes. Hice un juego 3D simple en el que andas y cambias los colores de los objetos. Pero ahora quiero convertirlo en multijugador, y tengo muchos problemas para descubrir cómo enviar los cambios a través de la red para que todos los jugadores puedan ver el cambio de color de un solo jugador.

Parte del problema es que ha sido difícil encontrar la respuesta utilizando el nuevo motor de red UNET. Y a veces me encuentro con respuestas que son para la forma más antigua.

Entonces, la pregunta principal es, ¿cómo conecto en red los cambios de propiedad de GameObject para no jugadores? Color, forma, tamaño, etc.

Aquí hay un código que tengo ahora, y he tenido muchas versiones diferentes, así que simplemente publicaré el actual:

 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 ();
     }
 }

He intentado muchas más soluciones, incluida la escritura de una secuencia de comandos separada en los objetos cuyo color quiero cambiar e incluyendo [SyncVar] y funciones de enlace. También probé Debug.Log en cada una de las funciones que espero actualizar los objetos en los clientes y se están ejecutando con los datos esperados.

Realmente no sé qué más hacer. Siento que es una cosa MUY simple que quiero hacer, pero no he encontrado la sincronización de GameObject de no jugadores en ninguna pregunta, tutorial u otros recursos. Cualquier idea sería útil, gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta