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 연결 작업
Systems/PackageSpawner를 만들고 PackageSpawner를 추가합니다.- Package Prefab과 화면 위쪽
SpawnPoint를 연결합니다. Package.prefab에 Destroy Below Boundary를 붙이고 Play합니다.
5. 코드가 동작하는 이유
Spawner는 Prefab 원본을 SpawnPoint의 월드 위치에 복제합니다. 각 택배는 경계를 통과하면 자기 GameObject 제거를 예약하므로 Scene에 사용하지 않는 인스턴스가 쌓이지 않습니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2Instantiate와 Destroy 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
10강. Instantiate와 Destroy 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.