ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프리펩(Prefab)
    유니티 2022. 2. 3. 15:35

    1. 프리펩(Prefab)

    프리펩이란?

    Prefab은 Pre-Fablication의 약자이다.

    한국어로 직역하면 미리 제작이라는 뜻이다.

    프리펩을 통해서 하이라키에 있는 게임 오브젝트들을 만들 수 있다. 이렇게 말하면 조금 어려울 수 있으니 비유를 하여 설명하자면 아래와 같다.

     

    우선 프리펩은 Project창에 존재하는 원본 오브젝트인데 클래스와 인스턴스의 관계로 설명되기 쉽다.

    클래스는 붕어빵틀이고 인스턴스는 붕어빵틀에서 나오는 붕어빵이다.

    이와 같이 프리펩은 붕어빵틀이고 프리펩을 통해 만들어진 오브젝트들은 붕어빵이라고 생각하면 된다.

    즉, Project창에 있는 프리펩(원본)을 Hierarchy창에 복사하여 생성하는 식으로 활용할 수 있다.

     

    Cube는 프리펩으로 생성함.

    프리펩으로 생성된 오브젝트는 일반 오브젝트와 달리 파란색을 띄고 있다.

     

    사용하는 이유

    모든 원본 객체를 Hierarchy창에 둔다면 나중에 수정할 일이 생겼을 때 수백개~수천개에 달하는 모든 게임 오브젝트들을 하나하나 수정해야하지만 프리펩으로 관리한다면 원본 객체 1개만 수정하면 그것을 복사하는 수백~수천개의 오브젝트들이 원본 객체를 따라서 수정이 가능하다.

     

    프리펩 생성

    하이라키에 있는 오브젝트를 프로젝트창으로 드래그 앤 드롭하면 프리펩이 생성이 된다.

     

    프리펩 수정

    먼저 프리펩을 선택하고 Open Prefab을 클릭하면 원본 객체의 수정이 가능하다.

     

    수정이 완료되었으면 3번을 클릭하면 다시 원래 화면으로 돌아간다.

     

    프리펩을 통해 생성된 오브젝트 수정

    참고로 클래스로부터 생성된 인스턴스들이 각각 다른값들을 가질수 있는 것처럼 프리펩으로 생성된 오브젝트들도 오버라이드를 통해 각기 다른 값을 가질 수 있다.

     

    2. Nested Prefab(네스티드 프리펩)

    네스티드 프리펩이란?

    Nested란 중첩된 이라는 뜻이다.

    프리펩을 중첩시킨다는 뜻으로 해석할 수 있는데 이것을 클래스로 비유를 해서 설명하면 클래스 안에 다른 클래스가 있다고 생각하면 된다.(포함관계) 

        class CubeAndSphere
        {
            Cube cube; // 포함 관계
            Sphere sphere; // 포함 관계
        }
    
        class Cube
        {
    
        }
        
        class Sphere
        {
        
        }

     

    이처럼 프리펩끼리 결합하여 다른 프리펩을 생성할 수 있다. 그림을 통해서 보면 아래와 같다.

     

    3. Prefab Variant(프리펩 배리언트)

    프리펩 배리언트는 상속의 개념과 같다.

    클래스로 표현하면 아래와 같다.

        class Cube
        {
            
        }
        class CubeVariant : Cube
        {
    
        }

     

    프리펩 배리언트 생성

    하이라키에 있는 프리펩을 프로젝트 창으로 드래그앤 드롭하면 아래와 같은 메시지가 뜬다.

    Prefab Variant를 눌러주면 프리펩 배리언트가 생성이 된다.

    자세히보면 프리펩과 프리펩 배리언트의 아이콘 모양이 다른걸 확인할 수 있다.

    참고로 아래가 프리펩이고 위가 프리펩 배리언트이다.

     

    프리펩을 수정하면 프리펩 배리언트도 수정된다.

    이것은 부모클래스가 수정되면 상속받는 자식클래스도 수정이 되는 것과 같다고 생각하면 된다.

    '유니티' 카테고리의 다른 글

    RigidBody와 Collider  (0) 2022.02.03
    Resource Manager  (0) 2022.02.03
    InputManager  (0) 2022.02.03
    플레이어 설정  (0) 2022.02.03
    유니티 함수정리1  (0) 2022.02.01
Designed by Tistory.