Sayıları Biçimlendir
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 3 / 56.
Bir sayıyı bir dizeye eklediğinde, sonuç C#’ın yazdığı biçimde görünür: zamanlayıcı 12.34567 gösterir ve 2 olan bir float, hiç ondalık basamak olmadan 2 gösterir. Bunun yerine bir biçim dizesi, ToString() içinde görünümünü belirler. İçindeki her 0, her zaman yazılan bir basamağı temsil eder: 7.ToString("000") sonucu 007, 41.27f.ToString("0.0") sonucu ise tek ondalık basamağa yuvarlanmış 41.3 olur. Dize enterpolasyonunda aynı biçim iki nokta üst üste işaretinden sonra gelir: $"{coins:000}", $"{topSpeed:0.0} m/s".
Zamanları dakika ve saniye olarak okumak daha kolaydır. Önce zamanı int türüne dönüştür; bu, kesirli kısmı atar. Ardından 60'a tam sayı bölme işlemi tam dakikaları, % 60 ise kalan saniyeleri verir. 83.46 saniyelik bir tur:
float lapTime = 83.46f;
int total = (int)lapTime; // 83
int minutes = total / 60; // 1
int seconds = total % 60; // 23
lapText.text = $"Lap: {minutes}:{seconds:00}"; // Tur: 1:2300 iki basamağın gösterilmesini sağlar: bu olmadan 64 saniyelik bir tur, 1:04 yerine 1:4 olarak görünürdü. Ayrıca (int) yuvarlama yerine kesirli kısmı attığından, 59.7 saniye 0:59 olarak gösterilir; yuvarlama ise kısa bir süre için 0:60 gösterirdi.
Görev
KolayOyun salonunun Scoreboard.cs dosyası sayıları biçimlendirmeden gösteriyor. Boşluk tuşuna basıldığında kombo çarpı 100 puan kazanılır ve kombo 0.5 artar; playTime ise oynanan saniyeleri sayar (Inspector değeri başlangıçta 47.5 olarak ayarlar). Sayımı olduğu gibi bırak ve üç metnin nasıl yazıldığını değiştir:
scoreText: puanı altı basamaklı olarak göster; örneğinScore: 000450.comboText: komboyu bir ondalık basamakla göster; örneğinCombo: x2.5, başlangıçta iseCombo: x1.0.timeText: dakika ve tam saniyeleri göster; örneğinTime: 2:07. Saniyeler her zaman iki basamaklıdır ve asla yukarı yuvarlanmaz.
Oyna'ya bas, birkaç kez puan kazan, ardından Kontrol Et'e bas.
Kendin dene
using UnityEngine;
using TMPro;
public class Scoreboard : MonoBehaviour
{
public TMP_Text scoreText;
public TMP_Text comboText;
public TMP_Text timeText;
public int score;
public float combo = 1f;
public float playTime;
void Update()
{
playTime += Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space))
{
score += (int)(100 * combo);
combo += 0.5f;
}
scoreText.text = "Score: " + score;
comboText.text = "Combo: x" + combo;
timeText.text = "Time: " + playTime;
}
}
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