인프런 커뮤니티 질문&답변

Gonsoft님의 프로필 이미지
Gonsoft

작성한 질문수

따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 01

스테이지 구성

리셋버튼이 스테이지1로 바꿔주지 않습니다.

작성

·

170

2

Pin Circle 게임에서 Reset 버튼을 눌러도

스테이지1로 전환되지 않습니다.

 

예) 스테이지 3까지 클리어 -> 리셋버튼 클릭-> 시작버튼클릭 -> 스테이지4에서 시작(타겟에 적혀있는 스테이지 숫자만 1)

 

이미 클리어 될때 씬이동이 일어나기 때문입니다.

 

리셋버튼을 누른후에, 게임 시작을 누르면

타겟에 적혀있는 숫자는 1로 바뀌지만

스테이지1로 씬 전환이 일어나지는 않습니다.

 

리셋버튼을 누르면 호출되는 함수에서 Level 1로 씬 이동 해주는 코드를 넣어줘야 할것같습니다.

저는 MainMenuUI.cs 에서 이렇게 수정했습니다.

 

-기존 코드-

public void ButtonClickEventReset()

{

PlayerPrefs.SetInt("StageLevel", 0);

}

 

-수정 코드-

public void ButtonClickEventReset()

{

PlayerPrefs.SetInt("StageLevel", 0);

int index = PlayerPrefs.GetInt("StageLevel");

SceneManager.LoadScene(index);

}

 

 

 

 

답변 1

0

고박사님의 프로필 이미지
고박사
지식공유자

좋은 의견 감사합니다.

 

음 이당시에 왜 이렇게 구성을 했는지 모르겠지만

리셋이 문제가 아니라 게임을 껐다 키면 항상 시작이 Stage01 씬이어서

현재 정보들이 StageN이어도 Stage01을 한판 진행해야 하는 것 같네요.

 

Reset() 메소드의 저 부분과 함께

 

MainMenuUI.cs의 Awake() 메소드에 굵은 글씨 코드를 추가해서

현재 index와 동일한 씬으로 바꿔줄 필요가 있을 것 같습니다.

 

// 현재 스테이지 레벨 정보 얻어오기

int index = PlayerPrefs.GetInt("StageLevel");

if ( index != SceneManager.GetActiveScene().buildIndex )

{

SceneManager.LoadScene(index);

}

// "StageLevel"에 저장된 값은 0부터 시작하기 때문에 +1을 해서 표시

// "Go" 버튼에 표시되는 스테이지 레벨 갱신

textLevelInMenu.text = $"Level {(index+1)}";

Gonsoft님의 프로필 이미지
Gonsoft

작성한 질문수

질문하기