테트리스 강좌

초등학생도 쉽게 따라할 수 있는 Unity 테트리스 게임 개발 강좌 자료

코드 리뷰 4단계: Spawner

8단계 이후 최종 Spawner.cs 전체 코드와 설명·복습입니다.

역할: 다음 블록을 프리팹 배열에서 랜덤으로 골라 spawnPoint 위치에 생성합니다. 게임 오버일 때는 스폰하지 않고 GameController.GameOver()를 호출한 뒤 Time.timeScale = 0으로 멈춥니다.

관련 단계 복기: 4단계 - 블록 이동 구현(Spawner, SpawnNext, Instantiate, spawnPoint) → 8단계 - 게임 완성(tetrisBlockPrefabs 배열, 랜덤 선택, IsGameOver, Time.timeScale).


전체 코드

using UnityEngine;

/// <summary>
/// 다음 블록을 프리팹 배열에서 랜덤으로 골라 spawnPoint 위치에 생성.
/// 게임 오버일 때는 스폰하지 않고 GameOver 호출 후 Time.timeScale = 0으로 정지.
/// </summary>
public class Spawner : MonoBehaviour
{
    public GameObject[] tetrisBlockPrefabs;   // Inspector에서 I, O, T 등 7종 프리팹 연결
    public Transform spawnPoint;              // 블록이 생성될 월드 위치

    private GameBoard gameBoard;
    private GameController gameController;

    /// <summary>게임 시작 시 한 번 실행. GameBoard·GameController 참조 저장 후 첫 블록 스폰.</summary>
    void Start()
    {
        gameBoard = FindObjectOfType<GameBoard>();
        gameController = FindObjectOfType<GameController>();
        SpawnNext();
    }

    /// <summary>
    /// 다음 블록 생성. LockPiece에서 호출됨.
    /// 게임 오버(스폰 영역에 블록 있음)면 GameOver 호출 후 시간 정지하고 return.
    /// </summary>
    public void SpawnNext()
    {
        if (gameBoard.IsGameOver())
        {
            Debug.Log("Game Over!");
            gameController.GameOver();
            Time.timeScale = 0;   // 게임 시간 정지 (Update 등이 멈춤)
            return;
        }
        int randomIndex = Random.Range(0, tetrisBlockPrefabs.Length);   // 0 ~ (Length-1) 중 하나
        Instantiate(
            tetrisBlockPrefabs[randomIndex],
            spawnPoint.position,
            Quaternion.identity
        );
    }
}

코드 설명

멤버 변수

Start()

SpawnNext()


복습

아래는 4단계·8단계에서 배운 내용을 정리한 복기 표입니다.

구분 내용 관련 단계
Instantiate 프리팹을 씬에 실제 오브젝트로 만드는 Unity API. (프리팹, 위치, 회전)을 넘깁니다. 4·8단계
Random.Range(0, Length) 0 이상 Length 미만 정수. 7개면 0~6. 8단계
Time.timeScale = 0 게임 시간을 멈춤. Update의 Time.deltaTime이 0이 되어 움직임이 멈춥니다. 8단계
호출 흐름 LockPiece() → Spawner.SpawnNext() → (게임 오버 아니면) Instantiate(다음 블록). 6·8단계
Inspector 연결 Tetris Block Prefabs 7개, Spawn Point 하나 반드시 연결. 4·8단계

← 이전: 코드 리뷰 3단계 (InputHandler) 다음: 코드 리뷰 5단계 (TetrisBlock) →