Таймеры могут иметь большое влияние, когда они отображаются графически. Этот рецепт иллюстрирует простой способ отображения отсчета в стиле взлета ракеты, используя изображения для каждой секунды (5, 4, 3, 2, 1) и одно окончательное изображение для "blast off (взлет)". Следующий скриншот показывает пример этого отсчета:
Для отображения графического таймера, выполните следующие действия:
1.Прикрепите следующий C# скрипт к Main Camera:
using UnityEngine;
using System.Collections;
public class CountdownGraphical : MonoBehaviour {
public Texture2D imageDigit1;
public Texture2D imageDigit2;
public Texture2D imageDigit3;
public Texture2D imageDigit4;
public Texture2D imageDigit5;
public Texture2D imageBlastOffText;
private int countdownTimerDelay;
private float countdownTimerStartTime;
void Awake(){
CountdownTimerReset( 5 );
}
void OnGUI(){
GUILayout.Label( CountdownTimerImage() );
}
void CountdownTimerReset(int delayInSeconds){
countdownTimerDelay = delayInSeconds;
countdownTimerStartTime = Time.time;
}
int CountdownTimerSecondsRemaining(){
int elapsedSeconds = (int)(Time.time - countdownTimerStartTime);
int secondsLeft = (countdownTimerDelay - elapsedSeconds);
return secondsLeft;
}
Texture2D CountdownTimerImage(){
switch( CountdownTimerSecondsRemaining() ){
case 5: return imageDigit5;
case 4: return imageDigit4;
case 3: return imageDigit3;
case 2: return imageDigit2;
case 1: return imageDigit1;
default: return imageBlastOffText;
}
}
} 2. В Hierarchy выберите Main Camera и перетащите каждое изображение в нужные переменные
Альтернативный способ реализации алгоритма таймера может быть представлен, в этом рецепте, путем сравнения текущих истекших секунд (Time.time) со временем запуска таймера - countdownTimerStartTime.
В этом рецепте, метод OnGUI() отображает label с изображением, который возвращается из метода CountdownTimerImage().Этот метод использует переключатель switch для возврата соответствующего изображения к текущему количеству оставшихся секунд.