النتيجة
الدرس 11 من 14 في دورة لعبة Unity: الثعبان ثلاثي الأبعاد على Coddy.
تزداد النتيجة في GameManager، لكن لا أحد يستطيع رؤيتها. يعرضها نص من TextMeshPro في الزاوية العلوية اليسرى: حقل TMP_Text تضبطه في Inspector، وتُحدَّث خاصية text الخاصة به من الشيفرة.
اكتب النص في الموضع نفسه الذي يتغير فيه الرقم، بعد التغيير. وبهذا لن تتأخر الشاشة أبدًا عن النتيجة. يحدّث المتجر رصيد العملات بالطريقة نفسها:
public void Buy(int price)
{
coins -= price;
coinsText.text = "Coins: " + coins;
}اضبط النص مرة واحدة في Start() أيضًا، حتى تعرض اللقطة الأولى النتيجة الحقيقية مهما كان النص المعروض في المشهد.
التحدي
متوسطاعرض النتيجة على الشاشة.
- في
GameManager، أضفusing TMPro;وpublic TMP_Text scoreText;(يربط المشهد ScoreText). - في
Start()، اعرضScore: 0. - في
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: الثعبان ثلاثي الأبعاد
تدرّب بنفسك: Playground لـ Unity