Unity 3 DUnet(Network)はどのように生成した物体をサブ物体に変えるか


Unity 3 DUnet(Network)はどのように生成した物体をサブ物体に変えるか
この問題を検索していると信じているあなたは、サーバで生成された物体をサブ物体に変えるのは簡単で、普段のやり方と同じですが、クライアントでは正常に変換できません.
これは,サーバ上でSpawnがクライアントに物体を出した後,クライアントの階層関係とサーバが異なるため,netIdを同期させることで親物体を取得する必要があるためである.
  • まず、物体生成時に親物体を指定するnetId:(ここではプレイヤーにコードを書きました)
  •    [Command]
       void CmdCreatWeapon()
       {
           GameObject myWeapon = Instantiate(weapon, hand.position, hand.rotation) as GameObject;//    
           myWeapon.GetComponent().parentId = netId;//       Id(parentId)   (    ) netId
           NetworkServer.SpawnWithClientAuthority(myWeapon, connectionToClient);//       (             ,       Spawn    )
       }
    
  • その後、生成時に得られたnetIdによって自身の親物体を取得する:(このコードは生成された物体に書かれている)
  • .
     [SyncVar] [HideInInspector] public NetworkInstanceId parentId;//  Id(  [SyncVar]  )
    
     private void Start()
      {
           GameObject parentObject = ClientScene.FindLocalObject(parentId);//    Id     
           transform.SetParent(parentObject.transform);//         
      }
    

    これで完成です.