Unity için Geri Sayım Sayacı Eğitimi

geri sayım sayacı, ayarlanan zamandan 0'a kadar sayan sanal bir saattir.

Unity'te bir Geri Sayım sayacı oluşturmak için, geri sayılacak süreyi saklayacak ve bunu 00:00 formatında görüntüleyecek bir komut dosyası oluşturmanız gerekir.

Unity geri sayım sayacı sol üst köşede.

Zamanlayıcı şu formatları içerecektir:

  • Gün:Saat:Dakika:Saniye:Milisaniye
  • Saat:Dakika:Saniye:Milisaniye
  • Dakika:Saniye:Milisaniye
  • Saniye: Milisaniye
  • Ayrıca yukarıdakilerin tümü ancak Milisaniye olmadan

Adımlar

Unity içinde geri sayım sayacı oluşturmak için aşağıdaki adımları izleyin:

  • yeni bir komut dosyası oluşturun, onu 'SC_CountdownTimer' olarak adlandırın, içindeki her şeyi kaldırın ve ardından aşağıdaki kodu yapıştırın:
  • Geri sayım sayacı C# betiği, 0'a ulaşana kadar toplam değerden çıkarılacak ve biçimlendirilmiş zamanı bir Metin öğesine uygulayacaktır.

SC_CountdownTimer.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SC_CountdownTimer : MonoBehaviour
{
    public enum CountdownFormatting { DaysHoursMinutesSeconds, HoursMinutesSeconds, MinutesSeconds, Seconds };
    public CountdownFormatting countdownFormatting = CountdownFormatting.MinutesSeconds; //Controls the way the timer string will be formatted
    public bool showMilliseconds = true; //Whether to show milliseconds in countdown formatting
    public double countdownTime = 600; //Countdown time in seconds

    Text countdownText;
    double countdownInternal;
    bool countdownOver = false;

    // Start is called before the first frame update
    void Start()
    {
        countdownText = GetComponent<Text>();
        countdownInternal = countdownTime; //Initialize countdown
    }

    void FixedUpdate()
    {
        if (countdownInternal > 0)
        {
            countdownInternal -= Time.deltaTime;

            //Clamp the timer value so it never goes below 0
            if (countdownInternal < 0)
            {
                countdownInternal = 0;
            }

            countdownText.text = FormatTime(countdownInternal, countdownFormatting, showMilliseconds);
        }
        else
        {
            if (!countdownOver)
            {
                countdownOver = true;

                Debug.Log("Countdown has finished running...");

                //Your code here...
            }
        }
    }

    string FormatTime(double time, CountdownFormatting formatting, bool includeMilliseconds)
    {
        string timeText = "";

        int intTime = (int)time;
        int days = intTime / 86400;
        int hoursTotal = intTime / 3600;
        int hoursFormatted = hoursTotal % 24;
        int minutesTotal = intTime / 60;
        int minutesFormatted = minutesTotal % 60;
        int secondsTotal = intTime;
        int secondsFormatted = intTime % 60;
        int milliseconds = (int)(time * 100);
        milliseconds = milliseconds % 100;

        if (includeMilliseconds)
        {
            if (formatting == CountdownFormatting.DaysHoursMinutesSeconds)
            {
                timeText = string.Format("{0:00}:{1:00}:{2:00}:{3:00}:{4:00}", days, hoursFormatted, minutesFormatted, secondsFormatted, milliseconds);
            }
            else if (formatting == CountdownFormatting.HoursMinutesSeconds)
            {
                timeText = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", hoursTotal, minutesFormatted, secondsFormatted, milliseconds);
            }
            else if (formatting == CountdownFormatting.MinutesSeconds)
            {
                timeText = string.Format("{0:00}:{1:00}:{2:00}", minutesTotal, secondsFormatted, milliseconds);
            }
            else if (formatting == CountdownFormatting.Seconds)
            {
                timeText = string.Format("{0:00}:{1:00}", secondsTotal, milliseconds);
            }
        }
        else
        {
            if (formatting == CountdownFormatting.DaysHoursMinutesSeconds)
            {
                timeText = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", days, hoursFormatted, minutesFormatted, secondsFormatted);
            }
            else if (formatting == CountdownFormatting.HoursMinutesSeconds)
            {
                timeText = string.Format("{0:00}:{1:00}:{2:00}", hoursTotal, minutesFormatted, secondsFormatted);
            }
            else if (formatting == CountdownFormatting.MinutesSeconds)
            {
                timeText = string.Format("{0:00}:{1:00}", minutesTotal, secondsFormatted);
            }
            else if (formatting == CountdownFormatting.Seconds)
            {
                timeText = string.Format("{0:00}", secondsTotal);
            }
        }

        return timeText;
    }
}
  • Hiyerarşi görünümü -> Kullanıcı Arayüzü -> Metin'e sağ tıklayarak ve onu adlandırarak yeni bir kullanıcı arayüzü metni oluşturun 'Countdown'

Unity yeni kullanıcı arayüzü metni oluştur

  • 'Countdown' Dikdörtgen Dönüşüm hizalamasını sol üst tarafa değiştirin, (0, 1)'e, Konum X ve Konum Y'yi 5'e, Genişliği 300'e ve Yüksekliği 60'a döndürün

  • 'Countdown' Metin Yazı Tipi Stilini Kalın olarak, Yazı Tipi Boyutunu 34 olarak, Hizalamayı Sol Ortaya ve Rengi beyaz olarak değiştirin

Unity Text Bileşen Denetçisi Arial Kalın Yazı Tipi Boyutu 34

  • SC_CountdownTimer komut dosyasını Metin bileşenine sahip 'Countdown' nesnesine ekleyin.

Komut dosyasının birkaç değişkeni olduğunu fark edeceksiniz:

  • Geri Sayım Biçimlendirmesi dize biçimlendirmesine hangi zaman birimlerinin dahil edileceğini kontrol eder.
  • Milisaniye sayısının gösterilmesi gerekiyorsa Milisaniye kontrollerini göster.
  • Geri Sayım Süresi saniye cinsinden geri sayımın süresidir; örneğin 600 değeri 10 dakikaya karşılık gelir.

Oynat'e bastıktan sonra geri sayım sayacının yer aldığı metni göreceksiniz:

0 saniyede komut dosyası konsolda geri sayımın bittiğini bildiren bir satır yazdıracaktır; kendi işlevselliğinizi eklemek için komut dosyasının bu bölümünü kullanın.

Önerilen Makaleler
Birlik için 2D Yakın Dövüş Saldırısı Eğitimi
Birlik FPS Sayacı
FPC Swimmer - Sürükleyici Su Ortamları için Kapsamlı Bir Birlik Varlığı
Unity için Fare Görünümü Komut Dosyası
Unity'de Işık Anahtarı Oluşturma Komut Dosyası
Unity için Raycast ve Mermi Tabanlı Silah Atış Senaryosu
Unity'de Hareket İçin Joystick Denetleyicisi Nasıl Kurulur