Unity 5.1 Networking: genera un objeto como elemento secundario para el host y todos los clientes

Tengo un objeto jugador que puede equipar varias armas. Cuando un arma está equipada, el padre de su transformación se pone en su mano. He estado jugando con esto durante algún tiempo y no puedo hacer que funcione tanto para el host como para el cliente. En este momento estoy tratando de equipar el arma en el servidor y decirle a todos los clientes que configuren las transformaciones de sus padres.

public NetworkInstanceId weaponNetId; 

   [Command]
    void Cmd_EquipWeapon()
    {
        var weaponObject = Instantiate (Resources.Load ("Gun"),
                                        hand.position,
                                        Quaternion.Euler (0f, 0f, 0f)) as GameObject;

        weaponObject.transform.parent = hand;

        NetworkServer.Spawn (weaponObject);

        //set equipped weapon
        var weapon = weaponObject.GetComponent<Weapon> () as Weapon;

        weaponNetId = weaponObject.GetComponent<NetworkIdentity> ().netId;
        Rpc_SetParentGameobject (weaponNetId);
    }

    [ClientRpc]
    public void Rpc_SetParentGameobject(NetworkInstanceId netID)
    {   
        weaponNetId = netId;
    }

Y en la actualización estoy actualizando la transformación de armas

    void Update () {

    // set child weapon tranform on clients
    if (!isServer) {
        if (weaponNetId.Value != 0 && !armed) {
            GameObject child = NetworkServer.FindLocalObject (weaponNetId);


            if (child != null) {
                child.transform.parent = hand;
            }
        }
    }

Sé que esta no es la forma más optimizada de hacer esto ... pero en este momento solo estoy tratando de hacer que esto funcione de cualquier manera posible y luego trabajar en ajustarlo. Parece que debería ser una tarea simple.