기본 패턴
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