2017-10-03 3 views
0

私はFindGameObjectsWithTag( "car")を使用していますが、タグ "car"を持つオブジェクトが3つあります。Unity FindGameObjectsWithTag( "taghere")は重複を返します

このメソッドは3つ以上のオブジェクトを返します。通常、4つのオブジェクトを返し、そのうちの1つが複製オブジェクトです。

全く理解できません。

アドバイスをいただければ幸いです。

+0

「車」ではなく「車」です。タイプミス? – Programmer

+0

あなたは間違いありません、タイプミス、ありがとうございました – matty357

答えて

0

私は次のように使用してこれを解決しましたコード;

foreach(Transform gObject in GetComponentsInChildren<Transform>()){ 
    if(gObject.tag == "car") 
    { 
     modelsList.Add(gObject.gameObject); 
    } 
} 
2

このメソッドは、3つ以上のオブジェクトを返します。通常は、4つのオブジェクト を返し、そのうちの1つが複製されます。

FindGameObjectsWithTag関数は、指定されたタグでのみリターンゲームオブジェクトをます。いいえ、重複を返すことはできません。

あなたは物事が正常に動作していないしていると思う理由の理由があります:それは3つの以上のオブジェクトを返すよう

。あなたは、シーンにそのタグと重複オブジェクトを持っています。この複製は、別のオブジェクトの子として隠れているか、または偽装されている可能性があります。タグがあれば削除します。

あなたは誤って別のGameObjectのタグを "car"に変更しましたが、今この機能が見つかりました。タグがあれば削除します。

。実行時に "car"タグ付きのGameObjectsをインスタンス化しています。この関数は、この関数を見つけることができます。

FindGameObjectsWithTag("car")をスクリプトに入れ、そのスクリプトを複数のオブジェクトに添付します。これは難しいことです。これを行うと、Debug.Logを使用すると、同じオブジェクトが2回表示されます。これがあなたが見ている効果ではないことを確認してください。このような場合は、FindGameObjectsWithTag("car")コードのスクリプトが1つのGameObjectのみに添付されていることを確認してください。


問題がDebug.Log、その二番目のパラメータを使用することにより、#1、#2、#3であるかどうかがわかります。

1つの空ゲームオブジェクト、その後するには、以下のスクリプトを添付し、あなたの他のDebug.Logコードを削除することを確認してください。その後、下の画像のようなコンソール]タブから各ログをクリックして

public class YourScript: MonoBehaviour 
{ 
    void Start() 
    { 
     GameObject[] obj = GameObject.FindGameObjectsWithTag("car"); 
     Debug.Log("Length: " + obj.Length); 

     for (int i = 0; i < obj.Length; i++) 
     { 
      Debug.Log(obj[i].name, obj[i]); 
     } 
    } 
} 

クリックして「再生」 階層に返された各ゲームオブジェクトFindGameObjectsWithTag("car")を強調表示します。これを使用して、 "car"タグが与えられている間違って隠されたGameObjectsを見つけて、タグを削除することができます。

enter image description here


問題は#4である場合は、複数のスクリプトを見つけ、それを削除するには、以下の画像を使用することができます。

enter image description here

+0

私はあなたの提案を今行っています。 – matty357

+0

私が説明した問題を診断するのに最適な解決策になるので、私はあなたの答えを受け入れます。私は3つの車のモデルからタグを削除し、次にプロジェクトの設定 - >タグとレイヤーに行きました。タグを削除することはできず、削除したモデル上に存在すると言いました。私は変更を加えず、プロジェクトを実行し、1つのGameObjectが "car"とタグ付けされていることがわかりました。私は数回停止してプロジェクトを開始した後、タグ付けされた1つのGameObjectを見つけることをやめました。それは、何らかのキャッシュが行われているようなものです。 – matty357

+0

問題が解決していない場合は受け付けないでください。それを受け入れることはできません。それはいいです。 Unityを終了し、プロジェクトのコピー/バックを作成して、プロジェクトのライブラリフォルダを削除することができます。もう一度実行し、問題がまだ存在するかどうかを確認してください。はいの場合は、Unity 2017.2betaを使用しています。重要なものを削除してから私に送信し、問題の再現方法を教えてください。 – Programmer

関連する問題