Menu
CoddyTech

점수 표시하기

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()를 호출하면 이전 개수가 표시되어 한 번 입력한 만큼 뒤처집니다.

challenge icon

챌린지

쉬움

화면에 정원사의 씨앗과 나무 수를 표시하세요.

  1. Gardener.cs에서 void ShowCounts()를 작성해 seedsText.text를 "Seeds: " + seeds로, treesText.text를 "Trees: " + trees로 설정하세요.
  2. 새 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 플레이그라운드