스파르타 본캠프 4일차

김동관·2025년 9월 25일

오늘 배운 StageSystem 코드 설명

public class StageManager : MonoBehaviour
{
public static StageManager Instance;

[Header("스테이지 오브젝트")]
public GameObject[] stageObjects;      // 1~4 스테이지 GameObject

[Header("스테이지 해금 상태")]
public int highestStage = 1;           // 현재 해금된 최고 스테이지

private void Awake()
{
    if (Instance == null)
    {
        Instance = this;
        // DontDestroyOnLoad(gameObject);
    }
    else
        Destroy(gameObject);
}

private void Start()
{
    highestStage = SaveSystem.LoadHighestStage();
    UpdateStageUI();
}

// UI 갱신 - GameObject 활성/비활성
public void UpdateStageUI()
{
    for (int i = 0; i < stageObjects.Length; i++)
    {
        if (stageObjects[i] != null)
            stageObjects[i].SetActive(i < highestStage);
    }
}

// 스테이지 클리어 시 다음 스테이지 해금
public void UnlockNextStage(int clearedStage)
{
    if (clearedStage >= highestStage)  //클리어 스테이지 해금 
    {
        highestStage = clearedStage + 1;  // 최종 스테이지는 클리어한 스테이지 보다 +1 임
        if (highestStage > stageObjects.Length)
            highestStage = stageObjects.Length;

        UpdateStageUI();
        SaveSystem.SaveHighestStage(highestStage);
    }
}

private void Awake와 else destyroy gameObject를 사용해 접근이 많은 코드에 싱글톤 적용
higheststage를 사용해 최고 해금 스테이지를 구현
(gamemanager에 Matched함수에 클리어시 로드가 되게 함수를 추가 적용)
SaveSystem까지 만들어서 적용을 시킴.
다음 스테이지 해금을 위한 코드

profile
아이디어 뱅크

0개의 댓글