Menu
CoddyTech

Canvas ve Metin

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

Unity, ekran üzerindeki metinleri, düğmeleri ve çubukları UI sistemiyle çizer. Unity 6'da GameObject > UI > Text - TextMeshPro seçeneği, Text (TMP) adlı bir metin nesnesi ekler; ilk seferinde Unity, metnin yazı tipi için ihtiyaç duyduğu TMP Essentials paketini içe aktarmanı ister. Sahnede henüz Canvas yoksa Unity bir tane oluşturur ve metni içine yerleştirir; ayrıca UI tıklamalarının iletildiği bir EventSystem de oluşturur. Canvas, çocuk nesnelerini kameranın görüntüsünün üzerine, kameranın nereye baktığından bağımsız olarak ekranın sabit bir konumunda çizer. Canvas Scaler ayarını Scale With Screen Size, 1920 x 1080, Match 0.5 olarak ayarla; bu kursta her sahnede bu ayarlar kullanılır ve böylece düzen her ekran boyutunda oranlarını korur.

Metnin bileşeni TextMeshPro - Text (UI) şeklindedir. Betikler bu bileşeni, TMPro ad alanındaki temel türü olan TMP_Text türünde bir alanda tutar ve gösterdiği içeriği bir metin dizisi olan text özelliği üzerinden değiştirir. Bu betik, başladığında seviyenin adını belirler:

using UnityEngine;
using TMPro;

public class LevelIntro : MonoBehaviour
{
    public TMP_Text titleText;

    void Start()
    {
        titleText.text = "World 2: Ice Caves";
    }
}

Hierarchy'den Text (TMP) nesnesini Inspector'daki Title Text alanına sürükle; Unity, metin bileşenini bu alana yerleştirir. using TMPro; olmadan TMP_Text adı tanınmaz ve betik derlenmez (CS0246). Alan boş bırakılırsa ilk titleText.text kullanımı UnassignedReferenceException hatasına yol açar. Betiğin yazdığı içerik, Inspector'da yazdığın Text Input değerinin yerine geçer; yeni oluşturulmuş bir metinde bu değer New Text'tir.

challenge icon

Görev

Kolay

Kaşifin hangi bölgede olduğunu üstteki ZoneText alanında göster.

  1. Explorer.cs dosyasına using TMPro; satırını ve public TMP_Text zoneText; alanını ekle. Sahne, ZoneText'i bu ada bağlar.
  2. Update() içinde, yorumun altına zoneText.text değerini transform.position.x değeri 2'nin altındayken Zone: Beach, aksi hâlde Zone: Jungle olarak ayarla.

“Oyna” düğmesine bas ve sağa doğru yürüyerek çimlerin üzerine çık: metin Jungle olarak değişir. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class Explorer : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        float move = Input.GetAxisRaw("Horizontal");
        transform.Translate(move * speed * Time.deltaTime, 0f, 0f);

        // ZoneText içinde bölgeyi göster: x = 2'nin altında Zone: Beach, 2'den itibaren Zone: Jungle
    }
}

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

Kendi başına pratik yap: Unity playground