Привет всем!Объясните пожалуйста как сделать таймер в скриптовом смысле.
Таймер нужен на секунды,ну там например:каждые 30 секунд к переменной money прибавляется 100 и т.д.
Админам добра!!!
Теги: Простой таймер Unity
Quadrobb |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Quadrobb » Unity, Unity3D » Простой таймер Unity
Привет всем!Объясните пожалуйста как сделать таймер в скриптовом смысле.
Таймер нужен на секунды,ну там например:каждые 30 секунд к переменной money прибавляется 100 и т.д.
Админам добра!!!
Теги: Простой таймер Unity
- Технический отдел помощи пользователям!!!
ОТВЕТ: Смотря на сколько долго такой процесс будет запущен.
Можно через Coroutineпсевдокод:
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
public int Money = 0;
public int MaxMoney = 10;
IEnumerator Start ()
{
start:
while (Money >= MaxMoney) yield return null;
while (Money < MaxMoney)
{
yield return new WaitForSeconds(2f);
if(Money < MaxMoney)
Money += 1;
}
goto start;
}
}
Минусом такого решения будет то что зависит от Time.timeScale
Имхо лучше вариант с сохранением DateTime последнего добавления денег и в апдейте смотреть разницу между ним и текущим временем (также можно сохранять в PlayerPrefs чтоб при старте посмотреть и начислить за всё время что игрока не было в игре)
using UnityEngine;
using System;
using System.Collections;
public class Test : MonoBehaviour
{
public int Money = 0;
public int MaxMoney = 10;
DateTime _lastAddTime = DateTime.MinValue;
bool _counting = false;
void Update()
{
if (Money >= MaxMoney)
{
_counting = false;
return;
}
if (!_counting)
{
_lastAddTime = DateTime.Now;
_counting = true;
return;
}
if ((DateTime.Now - _lastAddTime).TotalSeconds > 2.0)
{
Money += 1;
_lastAddTime = DateTime.Now;
}
}
}
Вы здесь » Quadrobb » Unity, Unity3D » Простой таймер Unity