24.02.04 TIL - Unity : Instantiate(), 동적으로 투사체 등의 오브젝트 생성

JJwoo·2024년 2월 4일
post-thumbnail

Instantiate()

컴퓨터 프로그래밍에서 클래스 또는 개체의 인스턴스를 생성하거나 추상적인 것을 구체적인 형태로 나타내거나 구현하는 것.

유니티에서는 주로 게임 오브젝트를 생성하는 메서드이다.
(원본 게임 오브젝트를 복제)

주로 투사체나 몬스터 스폰, 기타 환경 요소 등 반복되는 복제들을 만들어야 할 때 쓰인다.
혹은 컴포넌트를 추가하는 데에도 쓰인다.

! 부모 오브젝트의 컴포넌트도 같이 복제 됨 !

📑 Object.Instantiate 메서드의 매개변수 3종

  1. original : 원본 객체

  2. position : 복제 될 객체의 위치를 Vector3 타입으로 정의, 기본값은 Vector3.zero

  3. rotation : 새 객체의 회전(각도)를 Quaternion 타입으로 정의, 기본값은 Quaternion.identity

매개변수 표

메소드설명
Instantiate(Object original);original의 복제본을 생성
Instantiate(Object original, Transform parent);original의 복제본을 parent의 자식으로 생성
Instantiate(Object original, Vector3 position, Quaternion rotation);original의 복제본을 position 위치와 rotation 각도로 생성
Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);original의 복제본을 position 위치와 rotation 각도로 생성하고, parent의 자식으로 생성

예시)

public GameObject bulletPrefab; // 총알 프리팹

void Shoot()
{
    GameObject newBullet = Instantiate(bulletPrefab, transform.position, transform.rotation);
    // 총알을 현재 위치와 회전값으로 생성
}

💥주의 사항

Instantiate 메서드는 자원을 많이 사용하기에 객체 풀링(Object pooling)을 고려해야 하며, 생성된 객체는 메모리 누수를 방지하기 위해 관리가 필요하다. (Destroy 등)

또는 부모-자식 관계 설정, Layer/Tag 할당, 스크립트 컴포넌트의 상태 전달 등 추가 설정이 필요할 수 있다.

profile
개발 모코코

0개의 댓글