[RESOLU] [DB-AL] Continuer des fonctions avec update lorsque time.timescale=0

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Paullux
Messages : 68
Inscription : 12 Nov 2015 17:11
Contact :

[RESOLU] [DB-AL] Continuer des fonctions avec update lorsque time.timescale=0

Message par Paullux » 28 Jan 2018 22:35

Bonsoir à tous,

Dans mon jeu, j'ai besoin de mettre en pause le jeu pour afficher le menu du coup j'utilise time.timescale=0 qui mets bien en pause le cours du jeu.

Mais du coup, que mettre à la place de "void Update()" pour continuer une autre fonctionnalité de mon jeu ?
Dernière édition par Paullux le 01 Fév 2018 22:17, édité 1 fois.
J'ai créé un ensemble de jeux :

Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo

Il s'agit de FPS pour Android.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB-AL] Continuer des fonctions avec update lorsque time.timescale=0

Message par boubouk50 » 29 Jan 2018 16:41

Il me semble que l'Update() continue d'être appelé. Seul FixedUpdate () ne l'est plus puisqu'il est dépendant du temps.
Il faut juste ne pas utiliser le deltaTime qui vaudra 0 et rester indépendant du temps donc.

https://docs.unity3d.com/ScriptReferenc ... Scale.html
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Pitou
Messages : 95
Inscription : 28 Juil 2015 20:08
Contact :

Re: [DB-AL] Continuer des fonctions avec update lorsque time.timescale=0

Message par Pitou » 01 Fév 2018 16:10

Je plussoie Boubouk et je rajouterai même que tu peux certainement utiliser le unscaledDeltaTime pour pallier à ton soucis. Il ne dépend pas de la valeur de ton time.timescale.

https://docs.unity3d.com/ScriptReferenc ... aTime.html
On dit LE WiFi ! Y'en a marre !

Avatar de l’utilisateur
Paullux
Messages : 68
Inscription : 12 Nov 2015 17:11
Contact :

(RÉSOLU) Re: [DB-AL] Continuer des fonctions avec update lorsque time.timescale=0

Message par Paullux » 01 Fév 2018 22:17

J'ai trouver une technique en grande partie grâce à vous deux :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Menu : MonoBehaviour
{
    public GameObject Inventaire01, Inventaire02, Inventaire03, Inventaire04;
    private bool CanChange;
    // Use this for initialization
    void Start()
    {
        Inventaire01.SetActive(false);
        Inventaire02.SetActive(false);
        Inventaire03.SetActive(false);
        Inventaire04.SetActive(false);
        Time.timeScale = 1;
        CanChange = true;
    }

    void Update()
    {
        StopCoroutine("DetecteSortieDuMenu");
        if (Time.timeScale == 1)
        {
            if (CanChange && Input.GetKey((KeyCode)PlayerPrefs.GetInt("menuInt")))
            {
                Time.timeScale = 0;
                Inventaire01.SetActive(true);
                Inventaire02.SetActive(true);
                Inventaire03.SetActive(true);
                Inventaire04.SetActive(true);
                StartCoroutine("CanChanger");
            }
                
        } else
        {
            StartCoroutine("DetecteSortieDuMenu");
        }
    }
    IEnumerator DetecteSortieDuMenu()
    {
        if (CanChange && Input.GetKey((KeyCode)PlayerPrefs.GetInt("menuInt")))
        {
            Time.timeScale = 1;
            Inventaire01.SetActive(false);
            Inventaire02.SetActive(false);
            Inventaire03.SetActive(false);
            Inventaire04.SetActive(false);
            StartCoroutine("CanChanger");
        }
        yield return null;
    }
    IEnumerator CanChanger()
    {
        CanChange = false;
        float timer = Time.unscaledTime;
        while (Time.unscaledTime - timer < 2f)
        {
            yield return 0;
        }
        CanChange = true;
        yield return null;
    }
}
J'ai créé un ensemble de jeux :

Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo

Il s'agit de FPS pour Android.

Répondre

Revenir vers « Scripting »