Unity

[Unity] 유니티 캔버스(Canvas)에 자식 오브젝트(Child Object)붙이기, Adding child to Canvas, Instantiating a Image as a child of a canvas in Unity 5.x

정보처리마법사 2017. 1. 4. 15:55
반응형

[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.


잘 못 된 정보가 있으면 말씀해주세요~


공감버튼 클릭은 작성자에게 큰 힘이 됩니다.  행복한 하루 되세요.


 


반응형