• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

foreach문 Ienumerable 아직 이해를 못하겠습니다 ..ㅠㅠ

21.08.23 11:19 작성 조회수 182

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안에서만 순환을 돌아야 하는거 아닌가요?? 

답변 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);
... 

}

adsf2235님의 프로필

adsf2235

질문자

2021.08.23

감사합니다 :)