Поэтому решил на быструю руку набросать пару строчек, и выложить сюда да бы развеить новичкам их страшные сны.
версия 1:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class TimerLesson : MonoBehaviour {
public int xs, ys,;
public int xm, ym;
//do not edit
public int timersecond;
public float secondgametime = 0;
public float secondgametimereset = 0;
public float minedgametime = 0;
public float minegametimereset = 0;
void Update () {
//up game timer translate in second
secondgametime += Time.deltaTime;
if (secondgametime >= 2.5) {
timersecond += 1;
}
if (secondgametime >= 2.5) {
secondgametime = secondgametimereset;
}
//up second time translate into minutes
if (timersecond >= 60) {
minedgametime += 1;
timersecond = 0;
}
if (minedgametime >= 60) {
minedgametime = minegametimereset;
}
}
void OnGUI (){
GUI.Label(new Rect(Screen.width - xs,ys,xs1,ys1), " " + timersecond);
GUI.Label(new Rect(Screen.width - xm, ym, xm1, ym1), " " + minedgametime);
}
}
Координаты для GUI - высота,ширина на экране
public int xs, ys;
public int xm, ym;
стартовые числа для счётчика
public int timersecond;
public float secondgametime = 0;
public float secondgametimereset = 0;
public float minedgametime = 0;
public float minegametimereset = 0;
Запускаем наш таймер в положительном счёте, то есть 1,2,3,4 и т.д. (Примечание, если написать вместо += , -= то будет считать наоборот -1,-2,-3 и т.д.)
secondgametime += Time.deltaTime;
Выравниваем секунды в нормальные(Unity секунды спешат где то на двадцать секунд проверял ради интересна с телефона)
Синтаксис:
Используется csharp
if (secondgametime >= 2.5) {
timersecond += 1;
}
if (secondgametime >= 2.5) {
secondgametime = secondgametimereset;
}
timersecond += 1;
}
if (secondgametime >= 2.5) {
secondgametime = secondgametimereset;
}
Рассчитываем счётчик для минут
Синтаксис:
Используется csharp
//up second time translate into minutes
if (timersecond >= 60) {
minedgametime += 1;
timersecond = 0;
}
if (minedgametime >= 60) {
minedgametime = minegametimereset;
}
}
if (timersecond >= 60) {
minedgametime += 1;
timersecond = 0;
}
if (minedgametime >= 60) {
minedgametime = minegametimereset;
}
}
Вывод Чисел на экран, причём числа не будут плясать по экрану,на разных по размеру экранам, а будут фиксироваться.
Синтаксис:
Используется csharp
void OnGUI (){
GUI.Label(new Rect(Screen.width - xs,ys, 100, 50), " " + timersecond);
GUI.Label(new Rect(Screen.width - xm, ym, 100, 50), " " + minedgametime);
}
}
GUI.Label(new Rect(Screen.width - xs,ys, 100, 50), " " + timersecond);
GUI.Label(new Rect(Screen.width - xm, ym, 100, 50), " " + minedgametime);
}
}
Дальше вешаем скрипт на камеру, в инспекторе скрипта пишем координаты GUI 700,10 и 670,10 или же свои
Вывод числа не как в Unity таймере 1.343453 а культурные целые числа
Так же хочу отметить что если написать вместо апдейт, фиксапдейт, то скрипт на ос андроид будет работать немного точнее
версия 2 с подробным описанием в более оптемизированном скрипте
По этой ссылке скачивайте Asset и импортируете его в Unity
https://yadi.sk/d/X56YqD3JeoToL
Дальше откройте проект, он называется LessonTimer
Заходим папку скрипт и отрываем файл под названием TimerEmult
И так что мы видим
Поскольку описание в скрипте есть я не буду сильно на этом останавливаться..
Дальше вешаем наш скрипт на камеру
Запускаем и видим что отсчёт идёт
Дальше нам к примеру надо сделать что бы секунды и минуты начинали отчёт с 20 секунд 30 минут
Идём в Inspector
Пишем на против поля Timersecond 10, а на против поля Minedgametime 30
запускаем и видим отсчёт в секундах начался с 10 секунд, а отчёт минут с 30 минут.
Собственно сам скрипт кому лень скачивать)))
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class TimerEmult : MonoBehaviour {
public int timersecond; // проверка отчёта секунд в Inspector
private float secondgametime; //(?) - нужно для работы Time.deltaTime
public float minedgametime;// проверка отчёта минут в Inspector
void Update () { // обновляет код каждый кадр
secondgametime += Time.deltaTime;
// расчитывакт интерфал времени.К примеру если хотите что бы счёстчик считал быстрее
//измените secondgametime >=1 на secondgametime => 0.5 , медленее - наоборот
if (secondgametime >= 1) {
// если secondgametime больше или равен нулю, тогда прибаляет одну секунду в наш счётчик
timersecond += 1;
//приравнивает счётчик Unity к нашему сеундному счётчику, тоесть счётчик Unity начинает
//отчёт от 0.0000, и когда доходит до еденицы сбрасывается до нуля
secondgametime = 0; // (?) - у нас в secondgametime записан счётчик Unity
}
//проделываем то же самое только уже с минутами
if (timersecond >= 60) {
//Если timersecond равен или больше 60, тогда к minegametime прибавляем одну минуту
minedgametime += 1;
//Сбрасываем секунды (возращяем секунды в исходное положение)
timersecond = 0;
}
//проделываем работу над сбросом минут
if (minedgametime >= 60){
// Если minegametime больше или равен 60, тогда minegametime будет равен нулю
minedgametime = 0; //(?) - если мы запишем minegametime = 0 под if(timersecond >=60){
//тогда счётчик будет думать, что если секунды больше или равны 60 ,то минуты
//будут равны нулю, тоесть минуты будут постоянно 0
}
}
//вывод на экран
void OnGUI (){
//Screen.width не даёт расползаться GUI (Графический элемент) по всему экрану, на разных по размеру экранам
GUI.Label(new Rect(Screen.width - 500,10,100,50), "SecondTime : " + timersecond);
GUI.Label(new Rect(Screen.width - 500, 25, 100, 50), "MinutesTime : " + minedgametime);
}
}