Menu
CoddyTech

최고 점수

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 24번째.

최고 점수는 플레이한 모든 게임에서 가장 좋은 결과이므로 PlayerPrefs에 저장되며, 게임에서 그 점수를 넘어설 때만 바뀝니다. 이 핀볼 테이블은 마지막 공이 빠져나갈 때 확인합니다:

void GameOver()
{
    int best = PlayerPrefs.GetInt("PinballBest", 0);
    if (score > best)
    {
        PlayerPrefs.SetInt("PinballBest", score);
        PlayerPrefs.Save();
        Debug.Log("New high score: " + score);
    }
}

비교가 최고 점수를 결정합니다. 비교하지 않으면 최고 점수가 5000인 상태에서 300점을 얻은 게임이 300점을 저장하고 기록은 사라집니다. 매 게임마다 0에서 시작하는 값이 아니라 저장된 최고 점수와 비교하세요. 불러온 값이 없는 필드는 재시작할 때마다 0이 되므로 어떤 점수든 그 값을 넘어섭니다. score > best는 동점일 때 기존 기록을 유지하지만, score >= best를 사용하면 동점도 새로운 최고 점수로 처리합니다.

플레이 중 최고 점수를 표시하려면 Start()에서 필드로 불러온 다음 해당 필드를 표시하세요. 게임에서 최고 점수를 넘어서면 필드, PlayerPrefs, 텍스트를 함께 업데이트하여 화면과 저장된 값이 서로 달라지지 않도록 하세요.

challenge icon

챌린지

중급

풍선 펌프: Space를 눌러 풍선에 공기를 넣으세요. 초당 20점을 얻고, 손을 떼면 점수를 획득합니다. 100을 넘게 펌프하면 풍선이 터져 0점이 됩니다. 펌프 동작, 풍선이 터지는 상황, 점수가 작성되어 있으며, 라운드가 끝나면 라운드 점수가 points에 저장된 상태로 EndRound()가 한 번 호출됩니다. BestPoints 키에 저장되는 최고 점수를 추가하세요:

  • Start()에서 최고 점수를 best에 불러오세요(새 플레이어의 경우 0). 그러면 ShowBest()가 해당 점수를 표시합니다.
  • EndRound()에서 points가 최고 점수보다 높으면 저장하고 표시한 다음 newBestText를 표시하세요. 최고 점수를 넘지 못한 라운드에서는 아무것도 변경되지 않습니다.

Play를 눌러 풍선을 몇 개 펌프한 다음(Stop과 Play를 누르면 새 라운드가 시작됩니다) Check를 누르세요.

직접 해보기

using UnityEngine;
using TMPro;

public class BalloonPump : MonoBehaviour
{
    public TMP_Text pointsText;
    public TMP_Text bestText;
    public GameObject newBestText;
    public float pumpRate = 20f;

    private float air;
    private int points;
    private int best;
    private bool roundOver;

    void Start()
    {
        ShowBest();
    }

    void Update()
    {
        if (roundOver) return;

        if (Input.GetKey(KeyCode.Space))
        {
            air += pumpRate * Time.deltaTime;
            transform.localScale = Vector3.one * (1f + air / 50f);
            pointsText.text = "Points: " + Mathf.FloorToInt(air);
            if (air > 100f)
            {
                points = 0;
                pointsText.text = "Pop! Points: 0";
                GetComponent<Renderer>().enabled = false;
                roundOver = true;
                EndRound();
            }
        }
        else if (Input.GetKeyUp(KeyCode.Space))
        {
            points = Mathf.FloorToInt(air);
            pointsText.text = "Points: " + points;
            roundOver = true;
            EndRound();
        }
    }

    void EndRound()
    {
        // 여기에서 새로운 최고 점수를 저장하세요
    }

    void ShowBest()
    {
        bestText.text = "Best: " + best;
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

실제 게임 만들기의 모든 레슨