Wynik
Lekcja 11 z 14 w kursie Gra w Unity: Wąż 3D w Coddy.
Wynik rośnie w GameManager, ale nikt nie może go zobaczyć. Tekst TextMeshPro w lewym górnym rogu go wyświetla: pole TMP_Text ustawione w Inspectorze, a jego text przypisywany w kodzie.
Ustaw tekst w tym samym miejscu, w którym zmienia się liczba, zaraz po zmianie. Dzięki temu ekran nigdy nie będzie pokazywał nieaktualnego wyniku. Sklep aktualizuje liczbę monet w ten sam sposób:
public void Buy(int price)
{
coins -= price;
coinsText.text = "Coins: " + coins;
}Ustaw tekst również raz w Start(), aby już pierwsza klatka wyświetlała rzeczywisty wynik, niezależnie od tego, co mówi tekst w scenie.
Wyzwanie
ŚredniWyświetl wynik na ekranie.
- W
GameManagerdodajusing TMPro;ipublic TMP_Text scoreText;(scena łączy z ScoreText). - W
Start()wyświetlScore: 0. - W
Eat(), po zdobyciu punktu, wyświetl"Score: " + score.
Naciśnij „Graj” i zjedz: w lewym górnym rogu wyświetla się Score: 1, Score: 2. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
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)];
}
}
Wszystkie lekcje w sekcji Gra w Unity: Wąż 3D
Poćwicz samodzielnie: Edytor online Unity