Unity오브젝트와 프리팹

프리팹 연결과 생성 흐름

프리팹을 인스펙터에 연결하고 런타임에 복제해 쓰는 Unity 기본 워크플로우를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

csharp
[SerializeField] private GameObject enemyPrefab;

Instantiate(enemyPrefab, spawnPoint.position, Quaternion.identity);

설명

  • 프리팹은 미리 구성된 오브젝트 템플릿이라서 반복 생성되는 게임 오브젝트를 관리하기 좋습니다.
  • 스크립트에서는 보통 [SerializeField]로 프리팹 참조를 받고, 인스펙터에서 끌어다 연결합니다.
  • 런타임에는 Instantiate로 복제해 사용하고, 필요하면 부모 Transform도 함께 넘길 수 있습니다.
  • 프리팹 원본과 씬 인스턴스의 차이를 이해하면 수정 범위를 덜 헷갈리게 됩니다.

짧은 예제

csharp
[SerializeField] private GameObject enemyPrefab;
[SerializeField] private Transform spawnRoot;

public void SpawnEnemy(Vector3 position)
{
    GameObject enemy = Instantiate(enemyPrefab, position, Quaternion.identity, spawnRoot);
    enemy.name = $"{enemyPrefab.name}_Clone";
}

빠른 정리

항목설명
프리팹재사용 가능한 오브젝트 템플릿
[SerializeField]인스펙터에서 참조 연결
Instantiate템플릿 복제 생성
부모 지정생성과 동시에 계층 구조 연결
원본 vs 인스턴스에셋과 씬 오브젝트를 구분해야 함

주의할 점

프리팹 참조가 비어 있으면 런타임 오류가 납니다. 생성 코드가 문제처럼 보여도 실제 원인은 인스펙터 연결 누락인 경우가 많습니다.

참고 링크

2 sources