개발일지

240826(월) Unity 강의 [게임 종료 로직, 시간차, 최고점수 구현, Invoke]

게임 프로그래머 2024. 8. 26. 23:23

2-9 게임 끝내기 - 게임 종료 로직 만들기

게임이 종료된 후 게임 종료 로직을 만들고 버튼을 누르면 재시작하기

 

먼저 게임 종료에 관한 부분은 게임에 대한 전반적인 기능을 담당하는 부분이므로

GameManager에서 담당한다.

 

GameManager.cs에서 싱글톤화를 하여 외부에서 호출가능하도록 한다.

public static GameManager Instance; 

private void Awake()
{
       if(Instance == null)
       {
          Instance = this;
       }
}

 

Instance == null, null은 비어있다라는 뜻으로 변수가 비어있을 경우 Instance = this를 한다는 의미이다.

 

게임 종료시 약간의 시간차 개선

bool isPlay= true;

void Update()
{
    if (isPlay)
    {
        time += Time.deltaTime;
        timeTxt.text = time.ToString("N2");
    }
}

public void GameOver()
{
    isPlay= false;
    Time.timeScale = 0.0f;
    nowScore.text = time.ToString("N2");
    endPanel.SetActive(true);
}

 

2-10 최고 점수 구현

유니터에서 데이터를 보관하는 방법: Playerprefs

앱을 껐다 켜도 데이터가 유지되게 하는 방법이다.

 

데이터 저장하기

PlayerPrefs.SetFloat("bestScore", 어떤숫자열);

PlayerPrefs.SetString("bestScore", 어떤문자열);

 

데이터 불러오기

어떤 숫자열 = PlayerPrefs.GetFloat("bestScore");

어떤 문자열 = PlayerPrefs.GetString("bestScore");

 

데이터를 저장했었는지 확인

PlayerPrefs.Haskey("bestScore")

 

데이터 모두 지우기

PlayerPrefs.DeleteAll();

 

Invoke 함수

특정 함수를 일정 시간 이후에 실행하고자 할때 사용한다.

Invoke("함수명"(string), 지연시간(float));