2017-11-27 5 views
0

나는 조립식이 있습니다하위 요소의 이미지 구성 요소를 참조하는 방법은 무엇입니까?

enter image description here

GridSpace 및 이미지는 모두 이미지 구성 요소를 가지고있다. GridSpace의 이미지 컴포넌트는 버튼 색상을 저장하고 Image의 이미지 컴포넌트는 그림을 저장하는 것입니다. 다음으로, 여러 GridSpace 프리 패브릭을 장면에 추가하고 있지만 모든 이미지 요소가 다른 임의의 이미지를 갖기를 원합니다. 내가 만든 객체의 구성 요소와 조립식 요소 및 링크 배열 요소를 추가하려면이 명령을 사용하고 있습니다 :

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>(); 

을하지만 당신은 "이미지"를 변경하면 이름이 너무 코드에서 변경해야하므로 이름이 하드 코딩 :

당신은 이런 식으로 할 수 있습니다. 또 다른 방법은 다음과 같습니다.

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

"GridSpace"및 "Image"게임 객체에만 이미지 구성 요소가 있습니다. GetComponent의 "s"를 s InChildren에 주목하십시오.

+0

환상적이며 효과적입니다. 고마워요 :) – Tomas

관련 문제