테트리스 강좌

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

상태 관리 (State Management)

📖 개념 설명

상태 관리는 게임의 현재 상황을 변수로 추적하는 것입니다.

bool isGameOver = false;
int score = 0;
int level = 1;

if (isGameOver)
{
    // 게임 오버 처리
}

🛠️ 실습: 점수·레벨 상태 변수 사용하기

목표: score, level 변수를 업데이트하고 조건에 따라 메시지를 출력합니다.

이 실습 전용 씬 만들기 (환경 설정)

먼저 이 실습 전용 씬을 만든 뒤 아래 순서로 진행합니다. (자세한 씬 만드는 방법은 개념 실습 테스트 환경 가이드의 씬 만드는 방법 참고.)

이 실습만 할 전용 씬이 없으면 아래 순서로 한 번만 만듭니다. (이미 ConceptTest_State 씬이 있으면 File → Open Scene으로 열고 아래 실습만 이어서 하세요.)

  1. File → New Scene → Basic (Built-in) 또는 Empty → Create
  2. File → Save As → 저장 위치: Assets/Scenes → 파일 이름: ConceptTest_State → Save
  3. 아래 실습은 모두 이 씬에서 진행합니다. (다른 문서로 왔다 갔다 하지 않습니다.)

수행 과정

  1. Unity에서 새 C# 스크립트 생성
    • 이름: StateTest
  2. 다음 코드 작성 ```csharp using UnityEngine;

public class StateTest : MonoBehaviour { private int score = 0; private int level = 1; private bool isGameOver = false;

void Start()
{
    Debug.Log("초기 상태 - 점수: " + score + ", 레벨: " + level);
    
    // 행 1줄 제거 시뮬레이션
    score += 100 * level;
    Debug.Log("1줄 제거 후 - 점수: " + score);
    
    // 10줄 제거했다고 가정 → 레벨 업
    level = 2;
    score += 300 * level;  // 2줄 제거
    Debug.Log("레벨 업 후 - 점수: " + score + ", 레벨: " + level);
    
    if (score >= 1000)
    {
        Debug.Log("1000점 달성!");
    }
} } ```
  1. 빈 GameObject에 스크립트 추가 후 Play
    • 초기 상태, 1줄 제거 후, 레벨 업 후 점수·레벨이 바뀌는 것 확인
    • 1000점 달성 시 메시지 출력
  2. 정리: 게임에서 score, level, isGameOver 같은 변수로 상태를 관리합니다.

← 개념 목록으로