[Unity] 유니티 캔버스(Canvas)에 자식 오브젝트(Child Object)붙이기, Adding child to Canvas, Instantiating a Image as a child of a canvas in Unity 5.x
유니티 Adding Child to Canvas
안녕하세요 정보처리마법사 입니다.
이번 포스팅의 주제는 Canvas에 child object를 추가하는 방법에 관한 내용입니다.
일단 여러방법으로 해봤는데 생각처럼 동작을 하지 않았습니다. 첫 번째 했던 방식은 프리팹을 GameObject 타입의 Public으로 선언해서
인스펙터에서 객체를 연결한 후 그냥 바로 인스턴스화해서 SetParent() 메소드를 사용하니 화면에 나타나질 않았습니다. 그 다음으로 시도한
방식은 위의 방법과 동일하게 하되 중간에 Image 타입으로 컨버팅을 한 후 인스턴스화를 했는데 마찬가지로 화면에 나타나지 않았습니다.
이론상으로는 되어야 하는데 왜 안됐는 지는 잘 모르겠습니다. 그래서 세 번 째 시도한 방법이 선언 자체를 Image 타입으로 해서 객체를
연결한 후에 아래와 같이 사용하니까 잘 되었습니다.
인덱스를 5까지 한 이유는 싱크를 맞추기 위해 1초 더 지연시킨 것 입니다. 이미지를 인스턴스화해서 GameObject.Find() 메소드를 써서 하이어라키의
캔버스를 찾은 후 SetParent를 해주었습니다. 굳이 이 방식 말고 Resources.Load 해서 바로 프리팹을 불러오는 방식을 사용해도 됩니다.
SetParent() 메소드의 두번째 파라미터를 false로 하지 않으면 좌표가 캔버스의 왼쪽 아래쪽에 설정이 됩니다.
<소스코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public Image pull_more; public Image count_three; public Image count_two; public Image count_one; public Image pull; IEnumerator count_down_3_and_pull() { Image[] arr_img = { count_three, count_two, count_one, pull, pull_more }; for (int i = 0; i < 5; i++) { Instantiate(arr_img[i]).transform.SetParent(GameObject.Find("Canvas_new").transform,false); yield return new WaitForSeconds(1f); } } | cs |
이상으로 포스팅을 마칩니다. 감사합니다.
Fin.
잘 못 된 정보가 있으면 말씀해주세요~
공감버튼 클릭은 작성자에게 큰 힘이 됩니다. 행복한 하루 되세요.