Written on
·
295
0
public override void Init()
{
base.Init();
Bind<GameObject>(typeof(GameObjects));
GameObject gridPanel = Get<GameObject>((int)GameObjects.GridPanel);
foreach (Transform child in gridPanel.transform)
{
Managers.Resource.Destroy(child.gameObject);
}
}
저번에 숙제 남겨주셔서, 찾아보니, foreach문을 사용하기 위해서 IEnumerable과 IEnumerator가 필요하고, foreach가 사용될 때, 지정한 자료형을 순환하는거 까지는 이해를 했습니다.
헌데, 위 코드에서는 gridpanel의 Transform을 순환하는데 어째서 foreach문으로 그 자식인 UI_Inven_Item에 접근할수 있는 것인지 아직 이해가 되지 않습니다 ㅜㅜㅠ foreach문이라면 GridPanel안에서만 순환을 돌아야 하는거 아닌가요??
Answer 1
0
그 부분은 사실 이해를 하려 할 부분이 아닙니다.
foreach 특성상 IEnumerable, IEnumerator 쪽에서 무엇을 뱉어주는지에 따라
그 아이를 foreach로 접근하게 되는데,
그냥 유니티 제작자들이 transform의 foreach를 할 때는
[해당 Component가 붙은 오브젝트에 붙어있는 다른 오브젝트들]을 뱉어주게 만든 것 뿐입니다.
그 부분이 정 답답하시면 아래와 같이 만드시면 됩니다.
Transform child = null;
int childCount = gridPanel.transform.childCount;
for (int i = 0; i < childCount; i++)
{
child = gridPanel.transform.GetChild(i);
...
}
감사합니다 :)