• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[c#] Odmierzanie czasu

Object Storage Arubacloud
0 głosów
1,657 wizyt
pytanie zadane 5 sierpnia 2017 w C# przez Stami Gaduła (3,790 p.)

Witam. Mam problem z odliczeniem czasu w c#. Wiem, że istnieje klasa Thread

System.Threading.Thread.Sleep(5000);

Lecz Ona usypia program i nic nie może się dziać. 
Wpadłem na pomysł oparcia się na dacie (DataTime) i zrobiłem taki programik:

    DateTime startGameTime;
    System.DateTime startMessage;

    void Start()
    {
        startGameTime = DateTime.Now;
        startMessage = startGameTime + TimeSpan.FromSeconds(5);
    }


    void Update ()
    {
        if (startMessage == DateTime.Now)
        {
            //Dalsze instrukcje
        }
    }

Programuje w unity gdzie:
Start() - wykonuje się przy włączeniu skryptu 
Update() - wykonuje się co klatkę (co chwile)

Jak wyświetlę sobie startMessage DataTime.Now to mogę zaobserwować, że w pewnym momencie są takie same (DataTime nie mierzy milisekund), a jednak skrypt nie wchodzi w if'a.

Co może być tego przyczyną? Jak to naprawić?
A może ktoś zna lepszy sposób jak w unity odmierzyć czas?

Z góry dziękuje za pomoc :)

2 odpowiedzi

+1 głos
odpowiedź 5 sierpnia 2017 przez PoetaKodu Stary wyjadacz (10,990 p.)
wybrane 6 sierpnia 2017 przez Stami
 
Najlepsza

https://docs.unity3d.com/ScriptReference/Time-deltaTime.html

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Update() {
        float translation = Time.deltaTime * 10;
        transform.Translate(0, 0, translation);
    }
}

 

komentarz 5 sierpnia 2017 przez Stami Gaduła (3,790 p.)
Niestety nie bardzo rozumiem jak to zaimplementować do mojego programu... Po x sekundach od uruchomienia programu mają się wykonać jakieś rzeczy.
komentarz 5 sierpnia 2017 przez PoetaKodu Stary wyjadacz (10,990 p.)

Masz przecież czas klatki. Update() wykonuje się co klatkę, więc jeśli co klatkę będziesz dodawał czas klatki, to w pewnym momencie minie x sekund. Tak się własnie to robi - tworzysz akumulator - zmienną, która liczy czas i co klatkę zwiększasz jej wartość o Time.deltaTime. Kiedy akumulator wyniesie np. 10 to minęło 10 sekund, kiedy akumulator wyniesie 15 to 15 sekund itp.

double Accumulator;

// dalej

void Update()
{
    Accumulator += Time.deltaTime;
    if(Accumulator > 10)
    {
        Accumulator -= 10;
        // Akcja, która wykonuje się co 10 sekund.
    }
}

 

0 głosów
odpowiedź 5 sierpnia 2017 przez obl Maniak (51,280 p.)

Nie wiem jaki typ projektu tworzysz: konsolowy czy okienkowy. Jeżeli konsolowy to możesz wykorzystać timer w sposób opisany tutaj. A jeżeli okienkowy to zwyczajnie wykorzystujesz komponent timer np. tak jak tutaj.

Podobne pytania

0 głosów
3 odpowiedzi 558 wizyt
pytanie zadane 1 maja 2018 w C# przez Misiek Mądrala (5,300 p.)
+1 głos
3 odpowiedzi 256 wizyt
pytanie zadane 22 sierpnia 2015 w PHP przez inny_sub Obywatel (1,120 p.)
–1 głos
1 odpowiedź 303 wizyt
pytanie zadane 5 grudnia 2017 w C# przez Wojciech Tuszkiewicz Użytkownik (500 p.)

92,568 zapytań

141,422 odpowiedzi

319,638 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...