Unity - 7. 생성과 파괴

땡구의 개발일지·2025년 5월 10일

Unity마스터

목록 보기
20/78
post-thumbnail

게임의 규모가 커질 수록, 게임의 오브젝트들 또한 마찬가지로 많아진다. 모든 오브젝트를 다 불러와서 게임을 할 수는 없으니, 효율적으로 적절히 불러오고 다시 삭제해야 한다

생성 Instantiate

  • Instantiate 함수로 게임 오브젝트를 생성 가능
Instantiate(GameObejct gameObject);
  • 여러 오버로딩들이 있으니 확인해서 사용한다
  • 기본적으로 컴포넌트를 추가한 게임 오브젝트의 좌표와 회전각을 활용한 오버로딩을 사용한다
Instantiate(GameObejct gameObject, transform.position, transform.rotation);

빈 게임 오브젝트 생성

new GameObject("새로운 오브젝트");
  • 이렇게 쓰면 비어있는 게임 오브젝트가 생성된다. 그런데 아무런 컴포넌트를 가지고 있지 않으니 하나하나 GetComponent<>()를 쓰기에는 번거롭다. 이럴 때 쓰는 것이 프리팹이다.

프리팹

프리팹으로 게임 오브젝트 생성

// 프리팹 참조 변수
[SerializeField] GameObject prefab;
void Start()
{
	// 참조한 변수로 게임 오브젝트 생성
	Instantiate(prefab,transform.position,transform.rotation);
}	

파괴 Destroy

  • Destroy 함수로 게임 오브젝트를 씬에서 삭제할 수 있다
Destroy(GameObject gameObject)
  • 삭제될 시간을 지정하는 것도 가능
Destroy(GameObject gameObject, float destroyTime)
  • 파괴를 자주해야 하는 게임 오브젝트, 예를들어 FPS장르에서의 총알 같은 경우 잦은 메모리 할당과 삭제가 일어나서 군데군데 메모리가 비어있는 메모리 단편화(파편화) 문제가 생긴다. 해당 내용은 오브젝트 풀 포스트에서 간단히 확인한다
profile
개발 박살내자

0개의 댓글