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 / 56.

Bir metnin text özelliği bir dizedir, bu yüzden bir sayının gösterilmeden önce metne dönüştürülmesi gerekir. Sayıyı + ile bir dizeye eklemek bunu sağlar: "Wood: " + wood, wood 12 olduğunda Wood: 12 olur ve wood.ToString() sonucu 12 olur. Tek başına int uygun değildir: woodText.text = wood;, CS0029 hatasıyla başarısız olur: '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, alanın değerine göre metni yeniden yazar; sayıdaki her değişiklik bu yöntemi çağırır, Start() da aynı şekilde çağırır. Böylece ilk karede Inspector'a yazılan değer yerine gerçek değer gösterilir. Burada Space, 3 kütük keser:

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. Metni her Update() içinde yeniden yazmak 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(), bir tuş basımı geriden gelerek eski sayıyı gösterirdi.

challenge icon

Görev

Kolay

Bahçıvan ağaç diker. Ok tuşları onu hareket ettirir ve Gardener.cs dosyasında zaten olduğu gibi, tohum kaldığı sürece Space bir fidan diker. Sayıları ekranda göster; sahnede seedsText ve treesText bağlantıları bulunur:

  • seedsText kalan tohumları Seeds: 4 olarak gösterir, treesText ise dikilen ağaçları Trees: 1 olarak gösterir.
  • Her ikisi de ilk kareden itibaren ve her dikimden sonra doğru değeri gösterir. Inspector'da bahçıvana 5 tohum verilmiştir, ancak sahnedeki metinler hâlâ Seeds: 10 ve Trees: ? olarak görünür.
  • Her iki metni de ayarlayan tek bir metot yaz ve gerektiği her yerde çağır.

Play'e bas, tohumlar bitene kadar fidan dik, ardından Check'e 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: göster
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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