Canvas ve Metin
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 1 / 56.
Unity, ekran metnini, düğmeleri ve çubukları UI sistemiyle çizer. Unity 6'da GameObject > UI > Text - TextMeshPro, Text (TMP) adlı bir metin nesnesi ekler; ilk seferinde Unity, metnin yazı tipi için ihtiyaç duyduğu TMP Essentials'ı içe aktarmanızı ister. Sahnede henüz bir Canvas yoksa Unity bir tane oluşturur ve metni içine yerleştirir; ayrıca UI tıklamalarının üzerinden geçtiği bir EventSystem ekler. Canvas, alt öğelerini kameranın görüntüsünün üzerine, kamera nereye bakarsa baksın ekranda sabit bir konuma çizer. Canvas Scaler ayarını Scale With Screen Size, 1920 x 1080, Match 0.5 olarak belirleyin; bu kursta her sahnede böyle yapılır ve böylece düzen, her ekran boyutunda oranlarını korur.
Metnin bileşeni TextMeshPro - Text (UI)'dır. Betikler, onu TMPro ad alanındaki temel türü olan TMP_Text türünde bir alanda tutar ve bir string olan text özelliği üzerinden gösterdiği metni değiştirir. Bu betik, başladığında seviyeye ad verir:
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ükleyin; Unity, metin bileşenini alana yerleştirir. using TMPro; olmadan TMP_Text adı tanınmaz ve betik derlenmez (CS0246). Alan boş bırakılırsa ilk titleText.text, UnassignedReferenceException hatası verir. Betiğin yazdığı metin, Inspector'da yazılmış Text Input değerinin yerine geçer; yeni bir metin nesnesinde bu değer New Text'tir.
Görev
KolayKaşif, Explorer.cs dosyasının zaten yaptığı gibi sol ve sağ oklarla adada yürür. Ekranın üst kısmındaki ZoneText içinde nerede olduğunu göster; burada hâlâ Yeni Metin: yazıyor.
using TMPro;ekle ve adızoneTextolan bir publicTMP_Textalanı tanımla. Sahne, ZoneText'i tam olarak bu ada sahip bir alana bağlar.- Her karede, kaşifin x değeri 2'nin altındayken metin
Zone: Beach, 2 ve üzerindeykenZone: Jungleolsun.
Play'e bas, çimlerin üzerine yürü ve geri dön, ardından Check'e 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 değerinin altında Zone: Beach, 2 ve sonrasında Zone: Jungle
}
}
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