Unity - 스크립트에서 객체 생성 및 불러오기

김도현·2023년 10월 17일
0

TIL

목록 보기
49/76

불러오기

스크립트에서 이미지나 객체를 불러오는 방법은 여러가지가 있지만 가장 적절한 방법이 Resources를 사용한다.

  • Asset안에 있는 Resources폴더를 참조하여 작업을 수행할 수 있습니다.

하나만 지정해서 불러오기

Resources.Load<GameObject>("경로/파일 이름");

모두 불러오기

Resources.LoadAll<GameObject>("경로/파일 이름");

생성하기

private Dictionary<string, GameObject> _uiList = new Dictionary<string, GameObject>();
private Canvas _canvas;
private Transform _canvasTransform;

private void InitUIList()
{
  GameObject[] gameobjects = Resources.LoadAll<GameObject>("Prefabs/UI");
  foreach (GameObject obj in gameobjects)
  {
      GameObject uiobject = Instantiate(obj, _canvasTransform, false);
      _uiList.Add(uiobject.name, uiobject);
      uiobject.SetActive(false);
  }
}

해설 :
1. Resources/Prefabs/UI안에 있는 GameObject 타입의 객체들을 gameobjects에 저장합니다.

  1. Instantiate로 생성해줍니다.
  • 첫번째 파라미터는 생성할 객체를 입력한다.
    두번째 파라미터 자식으로 들어해서 부모의 Transform를 입력합니다.
    세번째 위치를 상대좌표로 할것인지 절대 좌표로 할것인지 설정합니다.(false가 상대좌표)
  1. Dictionary인 _uiList에 넣어서 호출시 사용할 수 있도록 저장합니다.
  2. 생성만 해놓고 나중에 필요시 사용하도록 SetActive를 false로 설정해줍니다.

번외

이미지등과 같이 Canvas안에 있어야 하는 객체는 위처럼 캔버스를 먼저 생성이후 윗 코드를 생성해주면 됩니다.

public T OpenUI<T>()
{
    var Obj = _uiList[typeof(T).Name];
    Obj.SetActive(true);
    return Obj.GetComponent<T>();
}

0개의 댓글