[RESOLU] date et heure

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: date et heure

Message par Max » 15 Juin 2021 07:44

Bonjour,

je penses que tu as encore du mal à bien appréhender le rôle de la fonction Update(). Dans ton code, tu lances une coroutine plusieurs dizaine de fois par seconde (le nombre étant lié à ton framerate). Donc cela ne peut que pauser des problèmes.
Et tout cela semble en effet bien complexe.
Tu peux simplement essayer de dire:

Code : Tout sélectionner

    DateTime  objectifMinuit ;
    void Start()
    {
        DateTime now = DateTime.Now;
        objectifMinuit = new DateTime(now.Year, now.Month, now.Day+1, 0, 0, 0);
    }
puis ensuite, vérifier l'écart te séparant de cette échéance par

Code : Tout sélectionner

DateTime localtime = DateTime.UtcNow.ToLocalTime();
Debug.Log("temps restant: "+ (objectifMinuit - localtime));
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

jones
Messages : 39
Inscription : 29 Jan 2021 11:01

Re: date et heure

Message par jones » 15 Juin 2021 09:36

je me sens tout bête tout d'un coup.
ça semble bien facile comme ça.
C'était la première fois que je travail avec des dates et heures, je pensais que ça serait une formalité qui me prendrait 2 minutes...

Merciiiiii énormément Max.

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: date et heure

Message par Max » 15 Juin 2021 17:15

jones a écrit :
15 Juin 2021 09:36
C'était la première fois que je travail avec des dates et heures, je pensais que ça serait une formalité qui me prendrait 2 minutes...
c'est le métier qui rentre (si on peut dire) :mrgreen:
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

jones
Messages : 39
Inscription : 29 Jan 2021 11:01

Re: date et heure

Message par jones » 26 Juin 2021 10:27

Maxx, ca ne fonctionne pas :pleur4: :pleur4: :pleur4:
Pourtant j'ai essayé tous les variants possible.
Mais rien n'y fait, à minuit, le bouton est toujours fermé et compte à rebours se relance dés le début.
Alors que mon jeu est "quasi" terminé, je reste bloqué sur ce système.

Code : Tout sélectionner



 if(PlayerPrefs.GetInt("levelComplete1")== 0 && PlayerPrefs.GetInt("Level2Ouvert")== 0 ){               
                   buttonLev2.interactable = false; 
           }
           
 if(PlayerPrefs.GetInt("levelComplete1")== 1 && PlayerPrefs.GetInt("Level2Ouvert")== 0 ){
                   buttonLev2.interactable = false; 
            DateTime localDate = DateTime.Now;
            objectifMinuit = new DateTime(localDate.Year, localDate.Month, localDate.Day, 09, 18, 0);
            
            buttonLev2.GetComponentInChildren<Text>().text  =(objectifMinuit-localDate).ToString();          
                     if( localDate > objectifMinuit){
                    PlayerPrefs.SetInt("Level2Ouvert", 1);
                  }
           }

 if( PlayerPrefs.GetInt("levelComplete1")== 1 && PlayerPrefs.GetInt("Level2Ouvert")== 1 ){
                buttonLev2.interactable = true;
                buttonLev2.GetComponentInChildren<Text>().text =("level 02");

                  if( PlayerPrefs.GetInt("levelComplete2")== 0 ){
                         DateTime localDate = DateTime.Now;
                         objectifMinuit = new DateTime(localDate.Year, localDate.Month, localDate.Day+1, 0, 0, 0);
                                 petitText2.text = (objectifMinuit-localDate).ToString(); 
                                 if( localDate > objectifMinuit){
                                   petitText2.text  ="";
                                   PlayerPrefs.DeleteAll();
                                 }
                  if ( PlayerPrefs.GetInt("levelComplete2")== 1){
                           petitText2.text  ="";
                           buttonLev2.interactable = true;         
                                 } 
                  }
        }


Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: date et heure

Message par Max » 26 Juin 2021 14:37

Bonjour,

je suppose que ce bout de code est dans l'update ?
Prend l'habitude de définir les objectifs dans les fonctions d'initialisation Start ou Awake.
Car là c'est mis à jour plusieurs fois pas seconde, il me semble te l'avoir déjà souligné. Résultat, objectifMinuit va changer en permanence, ce qui n'est pas souhaitable. C'est comme si tu avançais progressivement la ligne d'arrivé d'une course en même temps que les coureurs avancent, ils ne la franchiraient jamais :(
Dans le bout de code que j'ai posté plus haut, tu remarqueras que je définis l'objectif dans Start, et je passe par une variable globale et non locale.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

jones
Messages : 39
Inscription : 29 Jan 2021 11:01

Re: date et heure

Message par jones » 26 Juin 2021 15:36

oui, c'est dans l'update.
En fait, comme je t'ai dit, j'ai essayé pleins de variants. Du coup objectif minuit c'était initialement dans le Start() comme tu me l'avais indiqué puis j'ai fait des modifications vu que ça ne fonctionnait pas, tant tôt en usant de logique, tant tôt en faisant n'importe quoi par désespoir.
Pendant les tests, ça marchait, l'lorsque je définis une heure proche, genre dans quelques minutes pour essayer. Puis je ressaye à minuit, je vérifie le lendemain et nada le bouton est fermé et il y a encore le compte a rebours jusqu'à minuit.
Pour moi, la logique est correcte, je ne sais vraiment par ce qui cloche. En plus c'est le dernier point qui reste dans le jeu...
Là, le test que j'ai lancé aujourd'hui est de mettre l'objectif a 23h59 -_-

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: date et heure

Message par Max » 26 Juin 2021 18:13

J'avoue que j'ai un peu de mal avec ton code, plutôt confus.
Tu initialises plusieurs fois la localDate, idem pour objectifMinuit, perso je m'y perd un peu.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

jones
Messages : 39
Inscription : 29 Jan 2021 11:01

Re: date et heure

Message par jones » 26 Juin 2021 19:19

Alors voilà,
1) au début, on a : if(PlayerPrefs.GetInt("levelComplete1")== 0 && PlayerPrefs.GetInt("Level2Ouvert")== 0 ){
donc le bouton de level2 est fermé.
donc on joue au Level1 et on le débloque, ce qui donne : (PlayerPrefs.GetInt("levelComplete1")== 1.
ce qui nous mène à l'étape 2

2) if(PlayerPrefs.GetInt("levelComplete1")== 1 && PlayerPrefs.GetInt("Level2Ouvert")== 0 ){
ainsi le bouton 2 est toujours fermé, et il y a un compte a rebours jusqu'à minuit.
une fois minuit arrive, on a PlayerPrefs.GetInt("Level2Ouvert")== 1
ce qui nous mène à l'étape 3

3)if( PlayerPrefs.GetInt("levelComplete1")== 1 && PlayerPrefs.GetInt("Level2Ouvert")== 1 ){
dans l'étape 3, le bouton du level 2 s'ouvre mais :

3A) if( PlayerPrefs.GetInt("levelComplete2")== 0 ){ si on a toujours pas débloqué le niveau 2, on a un deuxième compte a rebours (petitTexte2) jusqu'à minuit.
si on debloque pas le niveau 2 à minuit, PlayerPrefs.DeleteAll();

3B) if ( PlayerPrefs.GetInt("levelComplete2")== 1){ si on débloque le niveau 2 alors le bouton du level reste ouvert

et ainsi de suite pour les autres niveaux



je sais que c'est plutôt compliqué et j'en suis sincèrement navré. Je n'aurai jamais osé demandé ça à quelqu'un si j'étais pas un peu désespéré.
Pièces jointes
code.png
code.png (156.69 Kio) Consulté 3141 fois

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: date et heure

Message par Max » 27 Juin 2021 15:58

Bonjour,

dans le morceau de code que tu as posté plus haut, un des deux calculs de objectifMinuit,
tu ne mets pas localDate.Day + 1, c'est volontaire ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

jones
Messages : 39
Inscription : 29 Jan 2021 11:01

Re: date et heure

Message par jones » 27 Juin 2021 16:05

ah oui, mais c'était juste pour tester. et ça fonctionnait bien. Mais dés lors que je met +1 et à minuit, ça ne fonctionne plus.
J'aurais du corriger avant de publier, désolé.
Mais, normalement c'est bien +1

Répondre

Revenir vers « Scripting »