ecsimsw

Prefab 본문

Prefab

JinHwan Kim 2019. 1. 30. 03:32

Prefab

- prefab은 객체지향에서의 class와 비슷한 친구이다.
  오브젝트의 컴포넌트 / 프로퍼티를 에셋으로 저장하고, 이런 설계도를 필요에 따라 간단히 인스턴스 하는 기능이다.
  • Using prefab
    - 오브젝트를 Hierarchy에서 project 뷰로 드래그 하는 것으로 프리펩 에셋으로 만들 수 있다. 또 반대로 프리펩 에셋을 Scene이나 Hierarchy로 드래그 하는 것으로 프리펩 에셋을 인스턴스 할 수 있다.
      프리팹 에셋을 편집하면 모든 packing된 오브젝트는 해당 편집이 적용된다. 이렇게 프리팹 에셋으로 packing되어 있는 오브젝트는 청색으로 이름을 갖고, 오브젝트를 우클릭 후 Unpacking prefab 하는 것으로 프리팹 에셋과의 연결을 끊을 수 있다.
    이름이 청색인 것은 이 오브젝트가 Prefab이거나 Model임을 나타낸다. 이는 inspector에서 확인 가능하다.
      프로젝트의 프리팹 에셋을 삭제하면 이것에 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 변수에 생성을 원하는 프리팹을 대입하고 해당 스크립트를 실행하는 것으로 인스턴스한다.
    Quaternion.identity은 회전 값 없음을 의미한다. Quaternion 값을 형식적으로 입력해야할 때 쓰이기도 한다.

'Etc > Unity' 카테고리의 다른 글

Animator  (0) 2019.02.02
Material / Texture  (0) 2019.01.30
Rigidbody / AddForce / AddTorque  (0) 2019.01.28
Accessing other gameobjects  (0) 2019.01.27
Rotate / Euler angle / Quaternion  (0) 2019.01.27
Comments