C#_ Unity Game programming

Unity-Instantiate할 때 Canvas의 자식으로 넣는법

doyyy_0 2024. 1. 13. 13:26

보통 UI를 프리팹화 해서 Instantiate할 때, Canvas의 자식으로 설정을 해놓지 않으면 그냥 인스턴스가 생성되어 UI에 뜨지 않는다. 따라서 Canvas의 자식으로 넣어주어야 한다.

 

Instantiate를 상세히 살펴보면,

public static T Instantiate<T>(T original) where T : Object;
public static T Instantiate<T>(T original, Vector3 position, Quaternion rotation) where T : Object;
public static T Instantiate<T>(T original, Vector3 position, Quaternion rotation, Transform parent) where T : Object;
public static Object Instantiate(Object original, Transform parent);

 

이렇게 있다. 

따라서

Instantiate(prefab,GameObject.Find("Canvas").transform);

이렇게 코딩하면 된다. 하지만, Find함수는 씬에 배치된 오브젝트들을 모두 탐색하여 찾아내는 방식이기 때문에 속도 저하가 일어날 수 있다. 따라서 필요할 때만 사용해야한다.