점수 표시하기
Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 2번째.
텍스트의 text는 문자열이므로, 숫자를 표시하려면 먼저 텍스트로 바꿔야 합니다. 문자열과 +로 연결하면 됩니다. "Wood: " + wood는 wood가 12일 때 Wood: 12가 되고, wood.ToString()은 12가 됩니다. int만으로는 맞지 않습니다. woodText.text = wood;는 CS0029 오류와 함께 실패합니다. 'int' 형식을 'string' 형식으로 암시적으로 변환할 수 없습니다.
숫자는 int 필드에 저장되고, 텍스트는 그 값만 표시합니다. 한 메서드가 필드의 값으로 텍스트를 다시 씁니다. 숫자가 바뀔 때마다 이 메서드를 호출하며, Start()에서도 호출하므로 첫 프레임부터 Inspector에 입력한 값이 아니라 실제 값이 표시됩니다. 여기서는 스페이스바를 누르면 통나무 3개를 벱니다.
public TMP_Text woodText;
private int wood;
void Start()
{
ShowWood();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
wood += 3;
ShowWood();
}
}
void ShowWood()
{
woodText.text = "Wood: " + wood;
}텍스트는 wood가 바뀔 때만 바뀝니다. 매 Update()마다 텍스트를 다시 써도 똑같이 보이겠지만, 아무 이유 없이 초당 60번 새 문자열을 만들게 됩니다. 순서가 중요합니다. wood += 3 전에 ShowWood()를 호출하면 이전 개수가 표시되어 한 번 입력한 만큼 뒤처집니다.
챌린지
쉬움화면에 정원사의 씨앗과 나무 수를 표시하세요.
Gardener.cs에서void ShowCounts()를 작성해seedsText.text를"Seeds: " + seeds로,treesText.text를"Trees: " + trees로 설정하세요.- 새
Start()에서 호출하고, 나무를 심는if문에서trees++;다음에 호출하세요.
‘플레이’를 누르세요. 텍스트에 Seeds: 5와 Trees: 0이 표시되고, 묘목을 심을 때마다 값이 바뀝니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
using TMPro;
public class Gardener : MonoBehaviour
{
public float speed = 4f;
public int seeds = 10;
public GameObject saplingPrefab;
public TMP_Text seedsText;
public TMP_Text treesText;
private int trees;
void Update()
{
float move = Input.GetAxisRaw("Horizontal");
transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
if (Input.GetKeyDown(KeyCode.Space) && seeds > 0)
{
Vector3 spot = new Vector3(transform.position.x, 0.5f, 1.5f);
Instantiate(saplingPrefab, spot, Quaternion.identity);
seeds--;
trees++;
}
}
// 첫 프레임부터 두 텍스트에 각각 Seeds:와 Trees:를 표시하세요
}
실제 게임 만들기의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드