fullstack

'instantiate'에 해당되는 글 1건

  1. [Unity3D] GameObject 생성과 삭제. Instantiate와 Destroy 1

[Unity3D] GameObject 생성과 삭제. Instantiate와 Destroy

Unity

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로 관리하여 재사용할 수 있도록 관리해 주는 것이 좋다