התוצאה
שיעור 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: נחש תלת־ממדי
תרגלו בעצמכם: Unity אונליין