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.
Görev
KolayBahçıvanın tohumlarını ve ağaçlarını ekranda göster.
Gardener.csiçinde,seedsText.textdeğerini"Seeds: " + seedsolarak vetreesText.textdeğerini"Trees: " + treesolarak ayarlayanvoid ShowCounts()yaz.- Yeni bir
Start()içinde ve ağaç dikmeifbloğundatrees++;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
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki ParalarKendi başına pratik yap: Unity playground