Menu
CoddyTech

Sayıları Biçimlendir

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

Bir dizgeyle birleştirilen sayı, C#'ın yazdığı biçimde görünür: zamanlayıcı 12.34567 gösterir ve değeri 2 olan bir float, hiç ondalık basamak olmadan 2 gösterir. Bunun yerine nasıl görüneceğini bir ToString() biçim dizgesi belirler. İçindeki her 0, her zaman yazılan bir basamağı temsil eder: 7.ToString("000") sonucu 007, 41.27f.ToString("0.0") sonucu ise bir 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".

Süreleri dakika ve saniye olarak okumak daha kolaydır. Önce süreyi int türüne dönüştür; böylece kesir kısmı atılır. Ardından 60'a tamsayı bölme, tam dakika sayısını verir; % 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}";   // Lap: 1:23

00 iki basamak gösterilmesini sağlar: bu olmadan 64 saniyelik bir tur, 1:04 yerine 1:4 olarak görünürdü. Ayrıca (int) kesir kısmını yuvarlamak yerine attığı için 59.7 saniye 0:59 olarak görünür; yuvarlama yapılsaydı kısa bir an için 0:60 görünürdü.

challenge icon

Görev

Kolay

Atari salonunun üç sayısını biçimlendir.

  1. Update() içinde önce int seconds = (int)playTime; ekle.
  2. Puanı altı basamaklı olarak Score: 000450 biçiminde {score:000000} ile; komboyu ise bir ondalık basamakla Combo: x2.5 biçiminde {combo:0.0} ile göster.
  3. Zamanı Time: 2:07 biçiminde göster: seconds / 60, iki nokta üst üste, ardından iki basamaklı olarak seconds % 60.

“Oyna” düğmesine bas ve Space tuşuna bas: puan altı basamaklı olarak kalır. Ardından “Kontrol et” düğmesine 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;
    }
}

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

Kendi başına pratik yap: Unity playground