| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- onpress
- react-three-fiber
- Flatlist
- 어플
- 디지몬상테스트
- extension
- 리액트
- 프로젝트
- 리액트네이티브
- cloudfront
- 개발자
- 똥피하기
- gamedev
- 21일챌린지
- three.js
- Unity초보
- 뇽뇽이
- React
- 모바일개발
- 사이드 프로젝트
- 나락퀴즈
- 토이프로젝트
- ReactNative
- Unity
- 습관
- Chrome Extension
- 66일챌린지
- StickyHeader
- 프론트엔드
- 게임개발
- Today
- Total
개발 블로그
Unity 오브젝트 생성·삭제할 때 자주 쓰는 함수들 본문
Instantiate부터 Destroy까지, 실제로 가장 많이 쓰는 것들만 정리
Unity로 게임을 만들다 보면
결국 계속 반복하게 되는 작업이 있습니다.
- 적 생성
- 총알 생성
- 이펙트 생성
- 오브젝트 삭제
- 다시 생성
처음엔 그냥 튜토리얼 따라 치다가
어느 순간 이런 고민이 생깁니다.
“이거 계속 Instantiate / Destroy 써도 되나?”
“SetActive랑 뭐가 다른 거지?”
“왜 프레임이 갑자기 떨어지지…?”
저도 이 부분에서 꽤 많이 삽질했습니다.
그래서 이 글에서는
Unity에서 오브젝트 생성·삭제할 때 실제로 가장 많이 쓰는 함수들을
실전 기준으로 정리해보려고 합니다.
1️⃣ Instantiate() – 오브젝트 생성의 시작
Unity에서 오브젝트를 만드는 가장 기본적인 방법입니다.
보통 이렇게 씁니다.
주로 사용하는 상황:
- 적 스폰
- 총알 발사
- 이펙트 생성
- UI 동적 생성
👉 프리팹 기반 생성이 기본 패턴입니다.
주의할 점
- 너무 자주 호출하면 성능 문제 발생
- Update에서 무분별하게 쓰면 프레임 드랍 직행
2️⃣ Destroy() – 가장 쉬운 삭제, 하지만 함정도 많음
오브젝트를 완전히 삭제합니다.
자주 쓰는 경우:
- 이펙트 정리
- 죽은 적 제거
- 임시 오브젝트 제거
문제는 여기서부터입니다
Destroy는 즉시 메모리에서 사라지는 게 아닙니다.
GC(가비지 컬렉션) 타이밍에 영향을 주고,
많이 쓰면 프레임 드랍의 원인이 됩니다.
그래서 실무에서는
“무조건 Destroy”는 잘 안 씁니다.
3️⃣ SetActive() – Destroy보다 더 자주 쓰이는 함수
오브젝트를 삭제하지 않고
비활성화만 합니다.
주 사용 사례:
- 총알, 적 재사용
- UI 열고 닫기
- 이펙트 관리
👉 성능 관점에서는
Destroy보다 SetActive가 훨씬 안전한 선택인 경우가 많습니다.
4️⃣ Destroy vs SetActive 차이 (중요)
이건 꼭 한 번 정리하고 가야 합니다.
| 메모리 | 해제됨 | 유지됨 |
| 성능 | 비용 큼 | 비용 적음 |
| 재사용 | 불가 | 가능 |
| 사용 용도 | 완전 제거 | 임시 비활성 |
👉 반복 생성/삭제되는 오브젝트라면
Destroy 대신 SetActive를 먼저 고민하는 게 좋습니다.
5️⃣ 오브젝트 풀링(Object Pooling)과 연결됨
여기까지 오면
자연스럽게 이 개념으로 이어집니다.
“그럼 미리 만들어두고 켜고 끄면 되겠네?”
맞습니다.
그래서 Unity에서는 오브젝트 풀링을 많이 씁니다.
기본 흐름:
- 게임 시작 시 오브젝트 여러 개 생성
- 필요할 때 SetActive(true)
- 사용 끝나면 SetActive(false)
👉 Instantiate / Destroy 남용으로 인한
성능 문제를 해결하는 대표적인 패턴입니다.
6️⃣ transform으로 생성 직후 위치 조정
오브젝트 생성 후 거의 항상 같이 쓰입니다.
또는 한 줄로:
👉 생성 + 위치 지정은 거의 세트라고 봐도 됩니다.
7️⃣ 부모 지정 (SetParent)
UI나 그룹 관리할 때 자주 씁니다.
주 사용 예:
- UI 동적 생성
- 여러 오브젝트 묶어서 관리
정리해보면 이렇습니다
Unity에서 오브젝트 생성·삭제 관련해서
실제로 손이 가장 많이 가는 함수들은:
- Instantiate
- Destroy
- SetActive
- transform.position
- SetParent
그리고 중요한 포인트 하나.
👉 Destroy는 최후의 수단처럼 생각하는 게 좋습니다.
마무리
처음 Unity 할 때는
Instantiate / Destroy만 알아도 게임은 돌아갑니다.
하지만
조금만 규모가 커지면
성능 이슈가 바로 드러납니다.
이 글을 보고
“아, 이건 Destroy 말고 SetActive 써야겠네”
이 정도만 느껴졌다면 충분합니다.
'Unity' 카테고리의 다른 글
| Unity 라이프사이클 함수 한 번에 정리 (Awake, Start, Update) (0) | 2026.02.04 |
|---|