Menu
CoddyTech

Skoru Göster

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 2 / 60.

Bir metnin text alanı bir dizedir, bu nedenle gösterilmeden önce bir sayının metne dönüştürülmesi gerekir. + ile bir dizeye eklemek bunu yapar: "Wood: " + wood, wood 12 olduğunda Wood: 12 olur ve wood.ToString() sonucu 12 olur. Tek başına int türü uygun değildir: woodText.text = wood; ifadesi CS0029 hatası verir: 'int' türü örtük olarak 'string' türüne dönüştürülemez.

Sayı bir int alanında tutulur, metin ise yalnızca onu gösterir. Bir yöntem, alandaki değere göre metni yeniden yazar; sayıdaki her değişiklik bu yöntemi çağırır, Start() da aynı şeyi yapar. Böylece ilk karede Inspector'a yazılan değer yerine gerçek değer gösterilir. Burada Space tuşuyla 3 kütük kesilir:

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;
}

Metin yalnızca wood değiştiğinde değişir. Her Update() çağrısında metni yeniden yazmak da aynı görünürdü, ancak boş yere saniyede 60 kez yeni bir dize oluştururdu. Sıra önemlidir: wood += 3 işleminden önce çağrılan ShowWood(), eski sayıyı gösterir; bir tuş basımı geriden gelir.

challenge icon

Görev

Kolay

Bahçıvanın tohumlarını ve ağaçlarını ekranda göster.

  1. Gardener.cs içinde, seedsText.text değerini "Seeds: " + seeds olarak ve treesText.text değerini "Trees: " + trees olarak ayarlayan void ShowCounts() yaz.
  2. Yeni bir Start() içinde ve ağaç dikme if bloğunda trees++; satırından sonra bu metodu çağır.

“Oyna” düğmesine bas: metinlerde Seeds: 5 ve Trees: 0 yazsın ve her fidanla birlikte değişsin. Ardından “Kontrol et” düğmesine bas.

Kendin dene

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++;
        }
    }

    // İlk kareden itibaren iki metinde Seeds: ve Trees: ifadelerini göster
}

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground