게임 개발 중 동일한 오브젝트를 반복해서 만들거나 수정하는 건 매우 번거로운 작업입니다. 이럴 때 Unity의 Prefab 시스템은 마치 "비밀 병기" 처럼 유용하죠! Prefab을 사용하면 오브젝트를 재사용하고 쉽게 수정할 수 있어 개발 효율이 크게 향상됩니다. 이번 글에서는 Prefab의 개념, 사용법, 그리고 장점에 대해 간단히 알아보겠습니다.
Prefab은 Unity에서 게임 오브젝트의 템플릿을 의미합니다. 즉, 게임 씬에서 오브젝트를 한 번 만들어서 Prefab으로 저장해두면, 이를 여러 씬에서 쉽게 재사용할 수 있습니다. 이 방식으로 복잡한 오브젝트를 다시 만들지 않고도 여러 씬에서 동일한 오브젝트를 반복해서 사용할 수 있습니다. 예를 들어, 적 캐릭터나 아이템, 건물과 같은 오브젝트를 Prefab으로 만들어두면 다양한 씬에서 유연하게 활용할 수 있습니다.
먼저 게임 씬에서 원하는 오브젝트를 만들고, 이 오브젝트를 프로젝트 뷰로 드래그 앤 드롭하면 Prefab이 생성됩니다.
예를 들어, 건물이나 캐릭터 모델을 Prefab으로 만들면 다른 씬에서도 동일한 구조를 반복해서 사용할 수 있습니다.
씬에서 배치된 Prefab의 복사본을 Prefab 인스턴스라고 부릅니다. 이 인스턴스는 원본 Prefab과 연결되어 있어서, 원본을 수정하면 모든 인스턴스에 변경 사항이 자동으로 적용됩니다.
한 번 만든 오브젝트를 다양한 씬에서 반복 사용 가능하므로, 복잡한 오브젝트를 다시 만들 필요 없이 손쉽게 재사용할 수 있습니다.
Prefab 원본을 수정하면, 그 Prefab을 사용하는 모든 인스턴스에 자동으로 동일한 수정 사항이 반영됩니다. 일관된 수정이 가능하다는 점에서 효율적입니다.
동일한 오브젝트 구조를 여러 번 사용하는 경우, 개별적으로 데이터를 저장하는 대신 Prefab 원본을 참조하기 때문에 메모리 사용이 절약됩니다.
Prefab Variant는 기존의 Prefab을 기반으로 변형된 오브젝트를 말합니다. 기본적인 설정은 유지하면서도, 특정 부분만 변형된 상태로 새로운 오브젝트를 만들 수 있습니다. 예를 들어, 다양한 적 캐릭터가 있을 때, 기본 속성은 동일하지만 외형이나 속성만 조금씩 다를 때 Prefab Variant를 사용하면 편리합니다.
기본 Prefab을 선택한 후 우클릭하고, Create Prefab Variant를 선택하면 기존 Prefab에서 일부 요소만 변형된 새로운 Prefab을 만들 수 있습니다.
ex) 여러 종류의 적 캐릭터는 기본 설정은 같지만, 외형이나 능력치는 다른 경우에 Prefab Variant로 관리합니다.
Prefab은 코드에서도 동적으로 생성할 수 있습니다. 게임 진행 중 새로운 오브젝트를 생성하거나, 특정 이벤트에 따라 아이템이나 적을 등장시킬 때 Prefab을 사용합니다.
public GameObject enemyPrefab;
void SpawnEnemy(Vector3 position)
{
Instantiate(enemyPrefab, position, Quaternion.identity);
}
위 코드처럼 Instantiate 함수를 사용해 Prefab을 복제하고, 게임 내에서 원하는 위치에 배치할 수 있습니다. 이렇게 동적으로 오브젝트를 생성하면, 많은 수의 오브젝트를 효율적으로 관리할 수 있습니다.
씬에서 Prefab 인스턴스를 수정한 경우, Apply 버튼을 눌러 해당 수정 사항을 원본 Prefab에 반영할 수 있습니다. 만약 변경 사항을 원하지 않는다면 Revert 버튼을 눌러 원래 상태로 되돌릴 수도 있습니다. 이를 통해 여러 인스턴스를 효율적으로 관리할 수 있습니다.
프로젝트가 커질수록 여러 가지 Prefab이 생기므로, 프로젝트 내에서 Prefab을 정리해두는 것이 중요합니다. Prefab 폴더를 따로 만들어 관리하면 나중에 찾거나 수정할 때 유리합니다.
하나의 Prefab 안에 다른 Prefab을 넣는 방식으로 복잡한 오브젝트 구조를 관리할 수 있습니다. 예를 들어, 건물 안에 캐릭터나 가구 등을 중첩된 Prefab으로 관리하면 나중에 수정이 더 쉬워집니다.
때로는 Prefab이 씬에서 잘못 연결되어 원본과 링크가 끊기는 경우가 있습니다. 이 경우 경고 메시지를 확인하고, Prefab이 제대로 연결되어 있는지 항상 주의해야 합니다.