[UNITY],[C#]/TIL : Today I Learned

데이터 저장

네,가능합니다 2024. 8. 20. 17:00

PlayerPrefs 라는 코드를 사용해서 데이터를 저장하고 불러오고 데이터가 있는지 확인 하는 작업을 오늘 배웠다.

 

아래의 코드를 작성했는데, 따라하기에 급급했다보니 최고점수를 표시하는데에는 성공했지만 최고점수가 현재점수보다 높은데도 현재점수가 최고점수에 계속 뜨고있다.

 

주석을 달아가며 뭐가 잘못됐는지 확인해보도록 하겠다

 

아래는 수정 전 코드이고

 

string key = "bestScore"

 

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

        if (PlayerPrefs.HasKey(key))  // 최고점수가 있다면
        {
            float best = PlayerPrefs.GetFloat(key);
            if(best < time)  // 최고점수 < 현재점수 
            {
                PlayerPrefs.SetFloat(key, time); // 현재점수를 최고점수에 저장
                bestScore.text = time.ToString("N2");
            }
            else
            {
                bestScore.text = time.ToString("N2");
            }
        }
        else // 최고점수가 없다면
        {
            PlayerPrefs.SetFloat(key, time); // 현재점수를 최고점수에 저장
            bestScore.text = time.ToString("N2");
        }


        endPanel.SetActive(true);
    }

 

아래는 수정 후 코드이다.

 

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

        if (PlayerPrefs.HasKey(key))  // 최고점수가 있다면
        {
            float best = PlayerPrefs.GetFloat(key); // 최고점수를 best란 변수에 저장
            if(best < time)  // 최고점수 < 현재점수 
            {
                PlayerPrefs.SetFloat(key, time); // 현재점수를 최고점수에 저장
                bestScore.text = time.ToString("N2"); // 현재점수(시간)를 String으로 변환해서 최고점수에 저장
            }
            else
            {
                bestScore.text = best.ToString("N2"); // best란 변수에 저장해놓은 최고점수를 bestScore에 보여줌
            }
        }
        else // 최고점수가 없다면
        {
            PlayerPrefs.SetFloat(key, time); // 현재점수를 최고점수에 저장
            bestScore.text = time.ToString("N2");
        }


        endPanel.SetActive(true);
    }

 

형광색으로 칠한 코드에 best가 아닌 time을 잘못 써놨던게 문제가 됐었다.

최고점수를 저장을 하긴 했지만 항상 현재 점수를 최고점수에 보여주고있었다.

'[UNITY],[C#] > TIL : Today I Learned' 카테고리의 다른 글

반복문  (0) 2024.08.22
고양이 밥주기 게임  (0) 2024.08.21
반복문 공부중 생긴 일  (0) 2024.08.19
제어문 (조건문)  (0) 2024.08.19
연산자 실습  (0) 2024.08.18