הניקוד
שיעור 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)];
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.