Menu
CoddyTech

점수

Coddy의 Unity 게임: 3D 스네이크 코스 레슨. 14개 중 11번째.

GameManager에서 점수가 올라가지만, 아무도 볼 수 없습니다. 왼쪽 위 모서리에 있는 TextMeshPro 텍스트에 점수를 표시합니다. Inspector에서 설정한 TMP_Text 필드에 코드로 text를 씁니다.

숫자가 바뀌는 바로 그곳에서, 바뀐 다음 텍스트를 씁니다. 그러면 화면에 점수가 항상 최신 상태로 표시됩니다. 상점에서도 같은 방식으로 코인을 업데이트합니다.

public void Buy(int price)
{
    coins -= price;
    coinsText.text = "Coins: " + coins;
}

또한 Start()에서도 텍스트를 한 번 설정하여, 씬의 텍스트에 무엇이 쓰여 있든 첫 프레임에 실제 점수가 표시되게 합니다.

challenge icon

챌린지

중급

점수를 화면에 표시하세요.

  1. GameManager에서 using TMPro;와 public TMP_Text scoreText;를 추가하세요(장면에서 ScoreText를 연결합니다).
  2. Start()에서 Score: 0을 표시하세요.
  3. Eat()에서 점수를 올린 후 "Score: " + score를 표시하세요.

‘플레이’를 누르고 먹이를 먹으세요. 왼쪽 위에 Score: 1, Score: 2가 표시됩니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    public Snake snake;
    public GameObject foodPrefab;
    private Transform food;
    private int score;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        food = Instantiate(foodPrefab).transform;
        MoveFood();
    }

    public bool IsFood(Vector3 cell)
    {
        return cell == food.position;
    }

    public void Eat()
    {
        score++;
        MoveFood();
    }

    void MoveFood()
    {
        List<Vector3> free = new List<Vector3>();
        for (int x = -snake.edge; x <= snake.edge; x++)
        {
            for (int z = -snake.edge; z <= snake.edge; z++)
            {
                Vector3 cell = new Vector3(x, 0f, z);
                if (!snake.Occupies(cell))
                {
                    free.Add(cell);
                }
            }
        }
        food.position = free[Random.Range(0, free.Count)];
    }
}

Unity 게임: 3D 스네이크의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드