# 프리팹 인스턴스화 소개

> Introductory context and common scenarios in which instantiating prefabs is useful.

런타임 시 프리팹을 인스턴스화하려면 코드에 해당 프리팹에 대한 레퍼런스가 필요합니다. 이러한 레퍼런스를 만들려면 코드에서 `GameObject` 유형의 공용 필드를 만든 뒤 인스펙터에서 해당 필드에 사용하려는 프리팹을 할당하십시오.

아래 스크립트 예시에는 프리팹에 대한 레퍼런스인 `myPrefab`이라는 public 변수가 하나 있습니다. 이는 `Start` 메서드에서 해당 프리팹의 인스턴스를 생성합니다.

```
using UnityEngine;
public class InstantiationExample : MonoBehaviour 
{
    // Reference to the Prefab. Drag a Prefab into this field in the Inspector.
    public GameObject myPrefab;

    // This script will simply instantiate the Prefab when the game starts.
    void Start()
    {
        // Instantiate at position (0, 0, 0) and zero rotation.
        Instantiate(myPrefab, new Vector3(0, 0, 0), Quaternion.identity);
    }
}
```

예제를 사용하는 방법

1. 프로젝트에서 새로운 MonoBehaviour 스크립트를 만들고 `InstantiationExample`이라는 이름을 지정합니다.
2. 위의 코드를 복사하여 새로운 스크립트에 붙여 넣은 후 저장합니다.
3. **GameObject** > **Create Empty** 메뉴를 사용하여 빈 게임 오브젝트를 만듭니다.
4. 스크립트를 빈 게임 오브젝트로 드래그하여 스크립트를 컴포넌트로 새 게임 오브젝트에 추가합니다.
5. [프리팹을 만든 후](/engine/6000.0/manual/working-in-unity/working-with-gameobjects/prefabs/creating.md) 해당 프리팹을 **프로젝트 창**에서 스크립트 컴포넌트의 **My Prefab** 필드로 드래그합니다.


**프리팹을 프로젝트 창에서 스크립트 컴포넌트의 My Prefab 필드로 드래그하기:**
![](/api/media?file=/engine/6000.0/media/images/PrefabDragIntoField.png)

Play 모드를 시작하면 씬의 (0, 0, 0) 위치에서 프리팹이 인스턴스화됩니다.

**인스펙터** 창에서 다른 프리팹을 **My Prefab** 필드로 드래그하면 스크립트를 변경하지 않고도 인스턴스화할 프리팹을 변경할 수 있습니다.

이 첫 번째 예시는 매우 간단하기 때문에 프리팹을 씬에 직접 배치하는 것에 비해 어떤 장점이 있는지 체감되지 않을 수 있습니다. 하지만 코드를 사용하여 프리팹을 인스턴스화하면 게임이나 앱이 실행 중일 때 복잡한 게임 오브젝트의 구성을 동적으로 생성할 수 있습니다. 이는 본 섹션의 다른 예시에서 확인할 수 있을 것입니다.

## 일반적인 시나리오

런타임에 프리팹을 인스턴스화하는 방식은 다음과 같은 시나리오에서 유용합니다.

* 단일 프리팹을 다양한 위치(예: 그리드 또는 원 배열)로 여러 번 복제하여 구조체를 빌드합니다.

* 런처에서 발사체 프리팹을 발사합니다. 발사체 프리팹은 **메시**, **리지드바디**, **콜라이더**, **오디오소스**, **동적 광원**, 자체 트레일 **파티클 시스템**이 포함된 자식 게임 오브젝트가 들어 있는 복잡한 설정일 수 있습니다.

* 여러 조각으로 부서질 수 있는 차량, 건물, 캐릭터(로봇 등)을 만듭니다. 이 시나리오에서 예시 스크립트는 완전체로서 작동 중인 로봇 프리팹을 삭제하여 파괴된 로봇 프리팹으로 대체합니다. 이 파괴된 프리팹은 서로 다른 부서진 부품들로 구성되며 각 부품에는 고유의 리지드바디와 파티클 시스템이 설정되어 있습니다. 이 기법을 사용하면 한 줄의 코드만으로 로봇을 여러 조각으로 폭파하여 원래의 게임 오브젝트를 파괴된 프리팹으로 대체할 수 있습니다.

다음 섹션에서는 이러한 시나리오를 구현하는 방법을 보여드리겠습니다.

## 추가 리소스

* [프리팹으로 구조 구축](/engine/6000.0/manual/scripting/object-oriented-development/instantiating-prefabs/structure.md)
* [발사체 및 폭발 인스턴스화](/engine/6000.0/manual/scripting/object-oriented-development/instantiating-prefabs/projectiles.md)
* [캐릭터 파괴 시뮬레이션](/engine/6000.0/manual/scripting/object-oriented-development/instantiating-prefabs/wrecks.md)
