# 스테이지 진행 시스템 설정 가이드

## 🎮 개요

스테이지를 순차적으로 해금하고, Stage 4는 Stage 1-3을 모두 클리어해야 나타나는 시스템입니다.

**기능:**
- ✅ Stage 1은 항상 열려있음
- ✅ Stage 1 클리어 → Stage 2 해금
- ✅ Stage 2 클리어 → Stage 3 해금
- ✅ Stage 1, 2, 3 모두 클리어 → Stage 4 등장
- ✅ 잠긴 스테이지는 클릭 불가

---

## 📋 Unity 설정 단계

### 1단계: StageSelect 씬 열기

1. **Project 창에서 `Assets/Scenes/StageSelect.unity` 더블클릭**

---

### 2단계: Stage 4 버튼 추가

#### Stage 4 버튼 생성

1. **Hierarchy에서 기존 Stage 버튼 중 하나 선택** (예: Stage1Button)
2. **Ctrl+D로 복제**
3. **이름: `Stage4Button`**
4. **위치 조정**: Stage 3 버튼 옆에 배치

#### Stage 4 버튼 설정

Stage4Button 선택 → Inspector:

1. **StageButton 컴포넌트**:
   - **Stage Number**: `4`
   - **Scene Name**: `Stage4`

2. **Stage Image**: Stage 4 이미지로 교체
   - **Locked Sprite**: Stage 4 잠금 이미지
   - **Unlocked Sprite**: Stage 4 해금 이미지
   - **Completed Sprite**: Stage 4 완료 이미지

---

### 3단계: StageSelectManager 설정

1. **Hierarchy에서 `StageSelectManager` GameObject 선택**

2. **Inspector → StageSelectManager 컴포넌트**:
   - **Stage Buttons** 배열 크기: `4`
   - 배열에 4개 버튼 모두 드래그:
     - Element 0: Stage1Button
     - Element 1: Stage2Button
     - Element 2: Stage3Button
     - Element 3: Stage4Button

---

### 4단계: 초기 상태 설정

**Stage 4 버튼을 처음에 숨기기:**

1. **Hierarchy에서 Stage4Button 선택**
2. **Inspector 상단의 체크박스 해제** (GameObject 비활성화)
   - 또는 스크립트가 자동으로 처리하므로 활성화 상태로 두어도 됨

---

### 5단계: 자동 정렬 설정 (버튼 밀어내기 효과)

스테이지 4가 생길 때 기존 버튼들이 자연스럽게 옆으로 밀리며 재배치되게 하려면 **Horizontal Layout Group**을 사용합니다.

1. **버튼들을 담을 부모 오브젝트 생성**:
   - Canvas 우클릭 → Create Empty
   - 이름: `StageButtonContainer`
   - 위치: 화면 중앙으로 설정 (RectTransform)
   - 크기: Width 1000, Height 300 (버튼들이 들어갈 충분한 크기)

2. **컴포넌트 추가**:
   - `StageButtonContainer` 선택 → Add Component
   - **`Horizontal Layout Group`** 검색 후 추가

3. **Horizontal Layout Group 설정**:
   - **Padding**: 상하좌우 여백 (필요시 조정)
   - **Spacing**: `50` (버튼 사이 간격)
   - **Child Alignment**: `Middle Center` (중요! 중앙 정렬)
   - **Control Child Size**: 체크 해제 (버튼 크기 유지)
   - **Child Force Expand**: 체크 해제 (버튼이 억지로 늘어나지 않게)

4. **버튼 넣기**:
   - Stage1, Stage2, Stage3, Stage4 버튼을 모두 `StageButtonContainer`의 자식으로 드래그
   - **순서 중요**: Hierarchy 상의 순서대로 정렬됨 (1, 2, 3, 4 순서)

**효과:**
- 평소에는 1, 2, 3번 버튼이 중앙에 예쁘게 정렬됨
- Stage 4가 켜지면(`SetActive(true)`), 1, 2, 3번이 왼쪽으로 밀리면서 4번이 들어갈 자리를 만듦

---

## 🎮 작동 방식

### 초기 상태
```
[Stage 1] [Stage 2] [Stage 3]
  (열림)    (잠김)    (잠김)
```

### Stage 1 클리어 후
```
[Stage 1] [Stage 2] [Stage 3]
  (완료)    (열림)    (잠김)
```

### Stage 2 클리어 후
```
[Stage 1] [Stage 2] [Stage 3]
  (완료)    (완료)    (열림)
```

### Stage 1, 2, 3 모두 클리어 후
```
[Stage 1] [Stage 2] [Stage 3] [Stage 4]
  (완료)    (완료)    (완료)    (열림)
                              ↑ 새로 등장!
```

---

## 🐛 문제 해결

### Stage 4가 안 나타난다면?

**진행 상황 확인**:
1. **Unity 에디터 → Play 모드**
2. **Console 창 확인**
3. **StageSelectManager 우클릭 → Reset All Progress** (테스트용)

**Stage 1-3 완료 확인**:
- Stage 1, 2, 3을 모두 Goal에 도달해서 클리어했는지 확인
- PlayerPrefs에 저장되어 있는지 확인

### Stage 4가 계속 보인다면?

**StageSelectManager 확인**:
- Stage Buttons 배열에 Stage4Button이 올바르게 할당되었는지 확인
- Stage4Button의 Stage Number가 `4`로 설정되었는지 확인

### 잠금이 안 풀린다면?

**Goal 스크립트 확인**:
- Goal GameObject에 Goal 컴포넌트가 있는지 확인
- Goal에 도달했을 때 `ProgressManager.Instance.CompleteStage()` 호출되는지 확인

---

## 💡 팁

### 테스트 방법

**진행 상황 초기화**:
1. **Hierarchy에서 StageSelectManager 선택**
2. **Inspector에서 우클릭 → Reset All Progress**
3. **또는 Unity 메뉴 → Edit → Clear All PlayerPrefs**

**특정 스테이지 강제 해금** (디버깅용):
```csharp
// Unity Console에서 실행
ProgressManager.Instance.CompleteStage(1);
ProgressManager.Instance.CompleteStage(2);
ProgressManager.Instance.CompleteStage(3);
```

### 스테이지 추가하기

더 많은 스테이지를 추가하려면:

1. **새 Stage 버튼 생성** (복제)
2. **Stage Number 설정** (5, 6, 7...)
3. **StageSelectManager의 Stage Buttons 배열에 추가**
4. **특별한 조건이 필요하면 StageSelectManager.cs 수정**

---

## 🎉 완성!

이제 스테이지를 순차적으로 클리어하면서 진행할 수 있습니다!

**플레이어 경험:**
1. 처음엔 Stage 1만 플레이 가능
2. 클리어하면 다음 스테이지 해금
3. Stage 1-3 모두 클리어하면 숨겨진 Stage 4 등장!

**자동 저장:**
- 진행 상황은 PlayerPrefs에 자동 저장
- 게임을 껐다 켜도 유지됨
