본문으로 건너뛰기
Unity C# 기초집LESSON 10

Instantiate와 Destroy

난이도초급
예상 시간40분
선수지식9강 Package Prefab

10강. Instantiate와 Destroy

1. 이번 강의에서 해결할 문제​

Scene에 미리 둔 택배만 움직입니다. 게임 중 Prefab을 생성하고 놓친 택배가 계속 남지 않게 제거해야 합니다.

2. 학습 목표​

3. 핵심 개념​

Instantiate는 Prefab의 런타임 인스턴스를 만들고 Destroy는 오브젝트 제거를 예약합니다. 자주 반복하면 메모리 할당과 수거 비용이 생길 수 있으므로 지금은 기능을 먼저 완성하고 20강에서 Pool로 교체합니다.

4. 단계별 실습​

C# · 파일 경로: Assets/DeliverySorter/Scripts/Spawning/PackageSpawner.cs

PackageSpawner.cs
using UnityEngine;

public sealed class PackageSpawner : MonoBehaviour
{
[SerializeField] private GameObject packagePrefab;
[SerializeField] private Transform spawnPoint;

public GameObject SpawnOne()
{
if (packagePrefab == null || spawnPoint == null)
{
Debug.LogError("Spawner references are missing.", this);
return null;
}

return Instantiate(packagePrefab, spawnPoint.position, Quaternion.identity);
}

private void Start()
{
SpawnOne();
}
}

C# · 파일 경로: Assets/DeliverySorter/Scripts/Packages/DestroyBelowBoundary.cs

DestroyBelowBoundary.cs
using UnityEngine;

public sealed class DestroyBelowBoundary : MonoBehaviour
{
[SerializeField] private float minimumY = -6f;

private void Update()
{
if (transform.position.y < minimumY)
{
Destroy(gameObject);
}
}
}

Inspector 연결 작업

  1. Systems/PackageSpawner를 만들고 PackageSpawner를 추가합니다.
  2. Package Prefab과 화면 위쪽 SpawnPoint를 연결합니다.
  3. Package.prefab에 Destroy Below Boundary를 붙이고 Play합니다.

5. 코드가 동작하는 이유​

Spawner는 Prefab 원본을 SpawnPoint의 월드 위치에 복제합니다. 각 택배는 경계를 통과하면 자기 GameObject 제거를 예약하므로 Scene에 사용하지 않는 인스턴스가 쌓이지 않습니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

Instantiate와 Destroy 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Instantiate와 Destroy” 구현을 설계할 때 책임과 구조를 올바르게 나눈 선택은 무엇인가요?
  2. 문제 2‘생성·제거 비용을 처음부터 무시’ 실수를 판단할 때 “Instantiate와 Destroy” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

10강. Instantiate와 Destroy 미완료 상태