인스턴스화는 게임 오브젝트를 씬에 동적으로 생성하는 과정이다. 예를 들어, 총알, 적, 아이템 등을 게임 플레이 중에 생성해야 할 때 사용한다.
다음 코드는 기본적인 인스턴스화의 예시로, 게임이 시작될 때 target
오브젝트를 복제한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
public GameObject target;
void Start()
{
Instantiate(target);
}
}
target
을 현재 씬에 복제한다. 생성된 오브젝트는 원본과 동일한 위치, 회전, 크기를 가진다.이 코드를 Empty Object (Spawner)에 붙이고 Sphere Object (Ball)를 만든 후, Rigidbody 컴포넌트를 붙인다. 게임을 실행하면 Ball 오브젝트가 생기면서 오브젝트가 중력을 받아 떨어진다.
Prefab은 게임 오브젝트의 템플릿으로, 여러 씬에 걸쳐 동일한 오브젝트를 재사용할 수 있게 해준다. Prefab을 수정하면, 해당 Prefab을 사용하는 모든 인스턴스가 자동으로 업데이트된다.
Instantiate
함수를 사용하여 Prefab을 씬에 복제한다.public class Spawner : MonoBehaviour
{
public GameObject target;
void Start()
{
Instantiate(target);
}
}
Instantiate
함수는 오브젝트를 복제할 때 위치, 회전, 부모 오브젝트 등을 설정할 수 있는 추가 인수를 제공한다. 이를 통해 생성된 오브젝트의 초기 상태를 세밀하게 제어할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
public GameObject target;
public Transform spawnPosition;
void Start()
{
Instantiate(target, spawnPosition.position, spawnPosition.rotation);
}
}
Transform
.이 코드는 target
오브젝트를 spawnPosition
의 위치와 회전으로 복제한다.
Instantiate
함수는 생성된 오브젝트의 참조를 반환한다. 이 참조를 사용하면 생성된 오브젝트의 프로퍼티와 메서드를 제어할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
public GameObject target;
public Transform spawnPosition;
void Start()
{
GameObject instance = Instantiate(target, spawnPosition.position, spawnPosition.rotation);
Debug.Log(instance.name);
}
}
또는 특정 컴포넌트를 직접 반환받을 수도 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
public Rigidbody target;
public Transform spawnPosition;
void Start()
{
Rigidbody instance = Instantiate(target, spawnPosition.position, spawnPosition.rotation);
instance.AddForce(0, 1000, 0);
}
}
Rigidbody 컴포넌트를 가진 target
오브젝트를 복제하고, 생성된 오브젝트에 힘을 가한다.
Instantiate
함수는 유니티에서 게임 오브젝트를 동적으로 생성하는 데 사용된다. 기본 인스턴스화부터 Prefab의 사용, 오브젝트의 위치와 회전 설정, 생성된 오브젝트의 제어까지 다양한 기능을 제공한다.