Prefab
- prefab은 객체지향에서의 class와 비슷한 친구이다.
오브젝트의 컴포넌트 / 프로퍼티를 에셋으로 저장하고, 이런 설계도를 필요에 따라 간단히 인스턴스 하는 기능이다.
오브젝트의 컴포넌트 / 프로퍼티를 에셋으로 저장하고, 이런 설계도를 필요에 따라 간단히 인스턴스 하는 기능이다.
-
Using prefab
- 오브젝트를 Hierarchy에서 project 뷰로 드래그 하는 것으로 프리펩 에셋으로 만들 수 있다. 또 반대로 프리펩 에셋을 Scene이나 Hierarchy로 드래그 하는 것으로 프리펩 에셋을 인스턴스 할 수 있다.프리팹 에셋을 편집하면 모든 packing된 오브젝트는 해당 편집이 적용된다. 이렇게 프리팹 에셋으로 packing되어 있는 오브젝트는 청색으로 이름을 갖고, 오브젝트를 우클릭 후 Unpacking prefab 하는 것으로 프리팹 에셋과의 연결을 끊을 수 있다.프로젝트의 프리팹 에셋을 삭제하면 이것에 packing되어 있던 오브젝트의 이름이 적색이 된다. 또, inspector에서 Prefab이 아닌 Missing이라는 속성을 확인할 수 있을 것이다. 이때는 적색이 된 오브젝트를 다시 프로젝트로 드래그하여 프리팹 에셋을 생성하면 된다. -
Instance in Runtime
- 프리팹 에셋을 Runtime 도중 인스턴스하는 것은 Instantiate 메소드를 이용하면 된다.public GameObject A; Instantiate(A, new Vector3(0, 0, 0), Quaternion.identity); Inspector에서 접근할 수 있도록 public으로 GameObject 타입 A 변수를 선언하고 Instantiate 메소드를 호출 후 인자로 생성할 프리팹(A), 생성 위치, 생성 시 회전 값을 입력한다.Inspector에서 해당 script의 A 변수에 생성을 원하는 프리팹을 대입하고 해당 스크립트를 실행하는 것으로 인스턴스한다.