Unity
[Unity3D] GameObject 생성과 삭제. Instantiate와 Destroy
bugwasd
2015. 11. 23. 15:38
Unity에서 Instantiate와 Destroy 함수를 이용하여 GameObject를 생성하고 삭제할 수 있다.
- Instantiate
Instantiate는 다음과 같이 사용할 수 있다.
|
1
|
Instantiate(original, position, rotation);
|
|
위와 같이 3가지의 매개변수를 가진다.
original - 생성할 GameObject로 현재 Scene에 있는 GameObject나 Prefab을 지정할 수 있다.
position - Vector3변수로 생성될 GameObject의 위치를 지정한다.
rotation - Quaternion변수로 생성될 GameObject의 회전값을 지정한다. 이변이 없는 한 원래 GameObject의 회전값 즉, original.transform.rotation으로 지정한다.
만약 총알을 생성하여 발사한다면 다음과 같이 바로 Rigidbody로 캐스팅하여 사용할 수 있다.
|
1
2
3
|
Rigidbody clone;
clone = Instantiate(bullet, gun.transform.position, bullet.transform.rotation) as Rigidbody;
clone.AddForce(transform.forward * 5000);
|
|
- Destroy
Destroy는 다음과 같이 사용할 수 있다.
|
1
|
Destroy(obj);
|
|
매개변수에 삭제할 Object를 넣어주기만 하면 된다.
만약 일정 딜레이를 준 후에 Object를 삭제하고 싶다면 다음과 같이 매개변수를 추가해주면 된다.
|
1
|
Destroy(obj, time);
|
|
time은 float 변수로 시간을 지정해 주기만 하면 된다.
- Instantiate와 Destroy의 문제점
예를 들어 총알과 같이 수없이 생성되고 삭제되는 GameObject가 있다고 하면 이를 계속 Instantiate와 Destory로 생성하고 삭제한다면 아무래도 시스템에 많은 부담을 줄 것이다. 따라서 이럴 경우에는 오브젝트들을 Pool로 관리하여 재사용할 수 있도록 관리해 주는 것이 좋다