title: Unity 5.1 Networking - Spawn an object as a child for the host and all clients
body: <p>I have a player object who can equip multiple weapons.  When a weapon is equipped, its transform's parent is set to its hand.  I have messed around with this for some time and cannot get this to work for both the host and the client.  Right now I am trying to equip the weapon on the server, and tell all the clients to set their parents transforms.</p>
  
  
  
  <pre class="lang-c# prettyprint-override"><code>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&lt;Weapon&gt; () as Weapon;
  
          weaponNetId = weaponObject.GetComponent&lt;NetworkIdentity&gt; ().netId;
          Rpc_SetParentGameobject (weaponNetId);
      }
  
      [ClientRpc]
      public void Rpc_SetParentGameobject(NetworkInstanceId netID)
      {   
          weaponNetId = netId;
      }
  </code></pre>
  
  <p>And in the update I am updating the weapons transform</p>
  
  <pre class="lang-c# prettyprint-override"><code>    void Update () {
  
      // set child weapon tranform on clients
      if (!isServer) {
          if (weaponNetId.Value != 0 &amp;&amp; !armed) {
              GameObject child = NetworkServer.FindLocalObject (weaponNetId);
  
  
              if (child != null) {
                  child.transform.parent = hand;
              }
          }
      }
  </code></pre>
  
  <p>I know this isn't the most optimized way to do this..but right now I am just trying to get this to work any way possible and then work on tweaking it.  Seems like it should be a simple task.</p>