النقاط
الدرس 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: 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)];
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.