본문으로 건너뛰기
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 미완료 상태