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