점수
Coddy의 Unity 게임: 3D 스네이크 코스 레슨. 14개 중 11번째.
GameManager에서 점수가 올라가지만, 아무도 볼 수 없습니다. 왼쪽 위 모서리에 있는 TextMeshPro 텍스트에 점수를 표시합니다. Inspector에서 설정한 TMP_Text 필드에 코드로 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)];
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.