2017-11-27 14 views
0

私はプレハブを持っている:子要素の画像コンポーネントへの参照方法は?

enter image description here

GridSpaceとイメージの両方が画像成分を持っています。 GridSpaceの画像コンポーネントはボタンの色を保存するためのもので、Imageの画像コンポーネントは画像を保存するためのものです。 次に、いくつかのGridSpaceプレハブをシーンに追加していますが、すべてのImage要素に異なるランダムなイメージを追加したいと思います。私が作成したオブジェクトの要素をプレハブ要素とリンク配列要素を追加するには、このコマンドを使用しています:

for (int y = 0; y < gridsInRow; y++) 
     { 
      for (int x = 0; x < gridsInColumn; x++) 
      { 
       GameObject newSmoke = Instantiate(gridSpacePrefab, new Vector3(0, 0, 0), Quaternion.Euler(0, 0, 0)) as GameObject; 
       buttonTextArray[x, y] = newSmoke.GetComponentInChildren<Text>(); 
       imageArray[x, y] = newSmoke.GetComponentInChildren<Image>(); 
      } 
     } 

私は画像の画像コンポーネントへの参照を格納するimageArrayを持っていると思ったが、それはGridSpacesに画像成分を参照していますようです'要素。 上記のコードで何が間違っているか知っていますか?または、イメージ要素のイメージコンポーネントをどのように参照できますか? さらに、buttonTextArrayはText要素のTextコンポーネントへの参照を格納します。唯一の問題はこの画像コンポーネントにあります。

答えて

2

GetComponentInChildrenも現在のオブジェクト(その子だけでなく)の内部を調べて、GridSpaceのイメージコンポーネントを返します。

あなたはこのようにそれを行うことができます。

imageArray[x, y] = newSmoke.transform.Find("Image").GetComponent<Image>(); 

いますが、「イメージ」の名前を変更した場合、あなたはあまりにもコードでそれを変更する必要がありますので、名前をハードコードされています。もう一つの方法は、次のようになります。唯一の「GridSpace」と「画像」ゲームオブジェクトをasumes

imageArray[x, y] = newSmoke.GetComponentsInChildren<Image>()[1]; 

は、イメージ・コンポーネントを持っています。 GetComponentの "s"に注意してください。s InChildren。

+0

素晴らしいです!どうもありがとうございました :) – Tomas

関連する問題