일부 게임은 씬에 일정한 수의 오브젝트를 유지하지만 게임플레이 중에 캐릭터, 보물 및 기타 오브젝트를 만들고 제거하는 것은 매우 일반적입니다. Unity에서 게임 오브젝트는 기존 오브젝트의 새로운 복사본을 만드는 Instantiate 함수를 사용하여 만들 수 있습니다.
public GameObject enemy;
void Start() {
for (int i = 0; i < 5; i++) {
Instantiate(enemy);
}
}
사본이 만들어진 오브젝트가 씬에 있을 필요는 없습니다. 에디터의 프로젝트 패널에서 public 변수로 드래그한 프리팹을 사용하는 것이 더 일반적입니다. 또한 게임 오브젝트를 인스턴스화하면 오리지널에 있는 모든 컴포넌트가 복사됩니다.
또한 프레임 업데이트가 끝난 후 또는 선택적으로 짧은 시간 지연 후에 오브젝트를 파괴하는 Destroy 함수가 있습니다.
void OnCollisionEnter(Collision otherObj) {
if (otherObj.gameObject.tag == "Missile") {
Destroy(gameObject,.5f);
}
}
Destroy 함수는 게임 오브젝트 자체에 영향을 주지 않으면서 개별 컴포넌트를 파괴할 수 있습니다. 일반적인 실수는 다음과 같이 작성하는 것입니다.
Destroy(this);
…이것은 스크립트가 연결된 게임 오브젝트를 파괴하는 것이 아닌, 호출하는 실제 스크립트 컴포넌트를 파괴합니다.