안녕하세요, 인친님들! 오늘은 Unity에서 자주 사용되는 중요한 메서드인 Instantiate에 대해 알아보겠습니다.
이 메서드는 게임 오브젝트를 생성할 때 매우 유용하니 잘 이해해두시면 좋겠어요!
Instantiate 메서드란?
Instantiate 메서드는 간단히 말해 프리팹(Prefab)을 실제 게임 세계에 생성하는 마법 같은 기능입니다. 프리팹은 미리 만들어둔 게임 오브젝트의 설계도라고 생각하면 됩니다.
어떻게 사용하나요?
- 매개변수로 프리팹을 전달합니다.
- 그러면 놀랍게도 그 프리팹의 실제 인스턴스(복제본)를 반환해줍니다!

위 다그림은 Instantiate 메서드의 작동 방식을 보여줍니다. 프리팹이 Instantiate 메서드를 통과하면 실제 게임 월드에 배치될 수 있는 인스턴스가 생성됩니다.
언제 사용하나요?
Instantiate 메서드는 다음과 같은 상황에서 주로 사용됩니다:
- 동적 오브젝트 생성: 게임 중에 적, 아이템, 효과 등을 생성할 때
- 레벨 생성: 맵의 요소들을 코드로 배치할 때
- 복제: 이미 존재하는 오브젝트의 복사본이 필요할 때
다양한 사용법
// 프리팹 선언
public GameObject 프리팹;
void 다양한인스턴시에이트사용법()
{
// 1. 기본 사용
Instantiate(프리팹);
// 2. 위치 지정
Vector3 위치 = new Vector3(0, 5, 0);
Instantiate(프리팹, 위치, Quaternion.identity);
// 3. 위치와 회전 지정
Quaternion 회전 = Quaternion.Euler(0, 45, 0);
Instantiate(프리팹, 위치, 회전);
// 4. 부모 트랜스폼 지정
Transform 부모오브젝트 = transform;
Instantiate(프리팹, 부모오브젝트);
// 5. 위치, 회전, 부모 모두 지정
Instantiate(프리팹, 위치, 회전, 부모오브젝트);
// 6. 월드 포지션 유지 옵션
bool 월드포지션유지 = true;
Instantiate(프리팹, 부모오브젝트, 월드포지션유지);
}
이제 각 사용법에 대해 자세히 설명해 드리겠습니다:
- 기본 사용
Instantiate(프리팹);- 가장 단순한 형태로, 프리팹을 현재 씬에 생성합니다.
- 프리팹의 원래 위치와 회전을 유지합니다.
- 위치 지정
Instantiate(프리팹, 위치, Quaternion.identity);- 지정된 위치에 프리팹을 생성합니다.
Quaternion.identity는 회전 없음을 의미합니다.
- 위치와 회전 지정
Instantiate(프리팹, 위치, 회전);- 지정된 위치와 회전으로 프리팹을 생성합니다.
- 부모 트랜스폼 지정
Instantiate(프리팹, 부모오브젝트);- 생성된 오브젝트를 특정 부모 오브젝트의 자식으로 설정합니다.
- 부모 오브젝트의 위치를 기준으로 생성됩니다.
- 위치, 회전, 부모 모두 지정
Instantiate(프리팹, 위치, 회전, 부모오브젝트);- 가장 상세한 제어가 가능한 형태입니다.
- 월드 포지션 유지 옵션
Instantiate(프리팹, 부모오브젝트, 월드포지션유지);- 부모 지정 시 월드 공간에서의 위치를 유지할지 결정합니다.
true면 월드 위치 유지,false면 부모 기준 로컬 위치로 설정됩니다.
주요 포인트:
- 모든 Instantiate 호출은 생성된 GameObject를 반환합니다.
- 위치는
Vector, 회전은Quaternion타입을 사용합니다. - 부모 지정 시
Transform컴포넌트를 사용합니다.
사용 예시
간단한 코드 예시를 통해 Instantiate의 사용법을 알아보겠습니다:
public GameObject enemyPrefab; // 인스펙터에서 할당할 프리팹
void SpawnEnemy()
{
Vector3 spawnPosition = new Vector3(0, 0, 0); // 생성 위치
Quaternion spawnRotation = Quaternion.identity; // 기본 회전값
GameObject newEnemy = Instantiate(enemyPrefab, spawnPosition, spawnRotation);
// 이제 newEnemy는 게임 월드에 실제로 존재하는 오브젝트입니다!
}
이 코드에서 Instantiate는 enemyPrefab을 복제하여 지정된 위치와 회전값으로 새로운 적 오브젝트를 생성합니다.
#유니티Instantiate #오브젝트생성 #프리팹인스턴스화 #유니티개발팁 #게임오브젝트생성 #유니티스크립팅 #C샵게임프로그래밍 #유니티3D #유니티2D #게임개발기초
'1인 개발 게임 (Unity) > UNITY' 카테고리의 다른 글
| [UNITY] UI의 기초, UI 생성하기! (1) | 2024.08.09 |
|---|---|
| [UNITY] 화면 비율상관없이 UI 위치 고정하는 법 -> 앵커 포인트 사용 (0) | 2024.08.09 |
| [UNITY] 프리팹 - 오브젝트 반복 생성, 활용하기 (2) | 2024.08.08 |
| [UNITY] 벡터의 크기만 가져가오는 법 (magnitude) (2) | 2024.08.08 |
| [UNITY] 충돌 판정 하는 법 1 - 원의 반지름 사용하기 (0) | 2024.08.08 |