Menu
CoddyTech

Der Punktestand

Lektion 11 von 14 im Kurs Unity-Spiel: 3D-Snake von Coddy.

Der Punktestand wird in GameManager hochgezählt, aber niemand kann ihn sehen. Ein TextMeshPro-Text in der oberen linken Ecke zeigt ihn an: ein TMP_Text-Feld, das im Inspector festgelegt wird, und dessen text per Code geschrieben wird.

Schreibe den Text an derselben Stelle, an der sich die Zahl ändert, und zwar nach der Änderung. Dann hinkt die Anzeige nie dem Punktestand hinterher. Ein Shop aktualisiert seine Münzen auf dieselbe Weise:

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

Lege den Text auch einmal in Start() fest, damit der erste Frame den tatsächlichen Punktestand anzeigt, unabhängig davon, welcher Text in der Szene steht.

challenge icon

Aufgabe

Mittel
  1. Füge in GameManager using TMPro; und public TMP_Text scoreText; hinzu. Die Szene weist ihm ScoreText oben links zu.
  2. Zeige in Start() Score: 0 an.
  3. Zeige in Eat() den neuen Punktestand an, also Score: 3 nach dem dritten Futterstück.

Drücke Play und iss, dann drücke Check.

Probier es selbst

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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Unity-Spiel: 3D-Snake