Nedtellingstimeropplæring for Unity
En nedtellingstidtaker er en virtuell klokke som teller fra et angitt tidspunkt til 0.
For å lage en nedtellingstidtaker i Unity, må du lage et skript som lagrer tiden som telles ned og viser det klokken 00:00 format.
Tidtakeren vil ha disse formatene:
- Dager: Timer: Minutter: Sekunder: Millisekunder
- Timer: minutter: sekunder: millisekunder
- Minutter: sekunder: millisekunder
- Sekunder: millisekunder
- Pluss alle de ovennevnte, men uten millisekunder
Trinn
For å lage en nedtelling i Unity, følg trinnene nedenfor:
- Lag et nytt skript, kall det 'SC_CountdownTimer', fjern alt fra det og lim inn koden nedenfor:
- Nedtellingstidtakeren C#-skriptet trekker fra den totale verdien til den når 0 og vil bruke den formaterte tiden på et tekstelement.
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;
}
}
- Opprett en ny UI-tekst ved å høyreklikke på hierarkivisningen -> UI -> Tekst og gi den et navn 'Countdown'
- Endre 'Countdown' Rekt Transform justering til øverst til venstre, vri til (0, 1), Pos X og Pos Y til 5, Bredde til 300 og Høyde til 60
- Endre 'Countdown' tekstskriftstil til fet skrift, skriftstørrelse til 34, justering til venstre senter og farge til hvit
- Fest SC_CountdownTimer-skriptet til 'Countdown'-objektet som har en tekst-komponent.
Du vil legge merke til at skriptet har noen få variabler:
- Nedtellingsformatering kontrollerer hvilke tidsenheter som skal inkluderes i strengformateringen.
- Vis millisekunder kontrollerer om millisekundtellingen skal vises.
- Nedtellingstid er varigheten av nedtellingen i sekunder, for eksempel tilsvarer verdien 600 10 minutter.
Etter å ha trykket på Play bør du legge merke til teksten fylt med en nedtellingstidtaker:
Ved 0 sekunder vil skriptet skrive ut en linje i konsollen, som signaliserer at nedtellingen er fullført, bruk den delen av skriptet til å legge til din egen funksjonalitet.