Skor
Coddy'nin Unity Oyunu: 3D Yılan kursunda ders 11 / 14.
GameManager içinde puan artıyor, ama kimse onu göremiyor. Sol üst köşedeki bir TextMeshPro metni puanı gösterir: Inspector'da ayarlanan bir TMP_Text alanı ve koddan yazılan text.
Metni, sayı değiştikten sonra değişikliğin yapıldığı yerde yaz. Böylece ekran puanın gerisinde kalmaz. Bir mağaza da jetonlarını aynı şekilde günceller:
public void Buy(int price)
{
coins -= price;
coinsText.text = "Coins: " + coins;
}Sahnedeki metin ne söylüyor olursa olsun, ilk karede gerçek puanın gösterilmesi için metni Start() içinde de bir kez ayarla.
Görev
OrtaPuanı ekranda göster.
GameManageriçindeusing TMPro;vepublic TMP_Text scoreText;ekle (sahne ScoreText'e bağlanır).Start()içindeScore: 0göster.Eat()içinde puanı aldıktan sonra"Score: " + scoregöster.
“Oyna” düğmesine bas ve yiyecekleri ye: sol üstte Score: 1, Score: 2 sayılır. Ardından “Kontrol et” düğmesine bas.
Kendin dene
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 Oyunu: 3D Yılan bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground