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: 3이 표시됩니다.

Play를 눌러 먹이를 먹은 다음, Check를 누릅니다.

직접 해보기

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)];
    }
}
quiz icon실력 점검

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

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