[Unity3D] GameObject 생성과 삭제. Instantiate와 Destroy
UnityUnity에서 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로 관리하여 재사용할 수 있도록 관리해 주는 것이 좋다
'Unity' 카테고리의 다른 글
[Unity3D] Coroutine (0) | 2015.11.28 |
---|---|
[Unity3D] 이동, 회전, 크기변경 정리 (5) | 2015.11.23 |
[Unity3D] Prefab (0) | 2015.11.20 |
[Unity3D] 충돌처리. Trigger와 Collision (2) | 2015.11.20 |
[Unity3D] 다른 오브젝트의 함수를 호출하는 방법들 (0) | 2015.11.11 |