Привет всем!Объясните пожалуйста как сделать таймер в скриптовом смысле.
Таймер нужен на секунды,ну там например:каждые 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