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.
Görev
KolayBahçı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:
seedsTextkalan tohumlarıSeeds: 4olarak gösterir,treesTextise dikilen ağaçlarıTrees: 1olarak 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: 10veTrees: ?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
}
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
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi4Sahneler ve Bölümler
Bir Sahne YüklemeBölümü Yeniden BaşlatmaSonraki BölümSahneler Arasında SaklamaTekrar: Bölüm Seçimi10Proje: 3D Platform Oyunu
ParkurHareketli Platformlar2Düğ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 Paralar