프로그래밍/Unity

프리팹 이름으로 인스턴스화하기 / Resource.Load()

windship 2020. 3. 23. 23:34

출처 : https://m.blog.naver.com/PostView.nhn?blogId=yoohee2018&logNo=220700356025&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

프리팹 이름으로 인스턴스화하기 / Resource.Load()

Resource.Load라는 함수를 이용하면 만들어놓은 프리팹을 이름으로 불러내서 게임 도중에 인스턴스화(생...

blog.naver.com

Resource.Load라는 함수를 이용하면 만들어놓은 프리팹을 이름으로 불러내서 게임 도중에 인스턴스화(생성)할 수 있다.

 

순서는 아래와 같다.

 

1) 프리팹 만들기

2) 프리팹을 리소스로 Import

3) 스크립트에서 Resource.Load()로 불러와서 Instantiate

 

Resource.Load()를 사용하려면 만들어놓은 프리팹을 리소스로 등록을 해야 하는데, Assets 폴더 아래에 Resources 라는 이름의 폴더를 만들고 (대소문자구별) 거기서 마우스우클릭 -> Import New Asset 클릭하여 Prefabs 폴더에 있는 프리팹 선택

 

리소스 폴더안에 하위폴더를 원하는대로 만들어서 관리할 수 있다.

나는 Prefabs라는 이름의 폴더를 하나 더 만들어서 import했다.

이렇게 리소스로 등록이 되었으면 아래와 같은 소스로, 이름을 가지고 리소스를 불러올 수 있다.

 

public void newObject(string objName)

{

Instantiate (Resources.Load ("Prefabs/"+ objName), new Vector3 (0, 0, 0), Quaternion.identity)

}

 

이렇게 하고 오브젝트 생성을 원하는 곳에서 위의 함수를 호출하면, 파라미터로 넘겨받은 objName을 가진 프리팹을 게임화면에 생성(인스턴스화) 할 수 있다. 프리팹이 수정될 경우 다시 import하거나 리소스 항목에서 함께 수정해 줘야 해서 이 점이 조금 번거로운 느낌이다. 그래서 지금 나는 프리팹을 스크립트에서 인스턴스화 시킬 때 ScriptableObject를 사용하고 있다.