Tutoriel sur le compte à rebours pour Unity
Un compte à rebours est une horloge virtuelle qui compte à partir d'une heure définie jusqu'à 0.
Pour créer un compte à rebours dans Unity, vous devrez créer un script qui stockera la durée du compte à rebours et l'affichera à 00:00. format.
La minuterie présentera ces formats:
- Jours: Heures: Minutes: Secondes: Millisecondes
- Heures: Minutes: Secondes: Millisecondes
- Minutes: secondes: millisecondes
- Secondes: millisecondes
- Plus tout ce qui précède mais sans millisecondes
Pas
Pour créer un compte à rebours dans Unity, suivez les étapes ci-dessous:
- Créez un nouveau script, appelez-le 'SC_CountdownTimer', supprimez tout puis collez le code ci-dessous:
- Le script du compte à rebours C# soustraira de la valeur totale jusqu'à atteindre 0 et appliquera le temps formaté à un élément Texte.
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;
}
}
- Créez un nouveau texte d'interface utilisateur en cliquant avec le bouton droit sur la vue Hiérarchie -> UI -> Texte et nommez-le 'Countdown'
- Modifiez l'alignement de 'Countdown' Rect Transform en haut à gauche, pivotez sur (0, 1), Pos X et Pos Y sur 5, Largeur sur 300 et Hauteur sur 60.
- Modifiez le style de police du texte 'Countdown' en gras, la taille de la police en 34, l'alignement au centre gauche et la couleur en blanc.
- Attachez le script SC_CountdownTimer à l'objet 'Countdown' qui possède un composant Texte.
Vous remarquerez que le script comporte quelques variables:
- Formatage du compte à rebours contrôle les unités de temps qui seront incluses dans le formatage de la chaîne.
- Afficher les millisecondes contrôle si le nombre de millisecondes doit être affiché.
- Countdown Time est la durée du compte à rebours en secondes, par exemple, la valeur 600 correspond à 10 minutes.
Après avoir appuyé sur Lecture, vous devriez remarquer le texte rempli d'un compte à rebours:
À 0 secondes, le script imprimera une ligne dans la console, signalant que le compte à rebours est terminé, utilisez cette partie du script pour ajouter votre propre fonctionnalité.