Page 3 sur 4

Re: Poblème sauvegarde

Publié : 19 Jan 2020 15:44
par Max
Salut,

Là avec les éléments disponibles, on ne peut pas vraiment en dire plus.
Tu as une methode (Save) dans ton script saveScript.cs qui est liée à ton onClick de ton bouton du menu.
Maintenant si le Save() se déclenche au lancement de la scène, ben il te faut en trouver l'origine.

Re: Poblème sauvegarde

Publié : 19 Jan 2020 16:12
par wolf03
Yes je me doute bien mais j’ai regarder encore et encore ce matin impossible de trouver l’origine du problème 😓

Re: Poblème sauvegarde

Publié : 19 Jan 2020 16:17
par Aelhan
Salut, a part trouver quel objet/script/événement déclenche la méthode save() c'est pas simple. Ton savescript est probablement attaché à un objet et quelque chose déclenche. A moins que le Debug.Log ne soit pas au bon endroit et ne reflète 0as la réalité de ce qu'il se passe ?! Tu peux nous mettre le code modifié stp ?
En fait ce n'est peut-être pas ta récupération de données qui foire du coup, mais s'il sauvegarde effectivement des le lancement avant de charger, en fait il te charge du vent donc forcement pas ce que tu veux...

Re: Poblème sauvegarde

Publié : 19 Jan 2020 16:36
par wolf03
bien les seules choses rattaché à script c'est mon player c'est bien ça le problème et mon script modifier est :

Code : Tout sélectionner

public class saveScript : MonoBehaviour
{
    public GameObject player;
    public GameObject panelMenu;
    bool affiche = false;

    void Start()
    {
        

        panelMenu.SetActive(false);

        if(PlayerPrefs.GetInt("load")==1)
        {
            // si load
            float x = PlayerPrefs.GetFloat("x");
            float y = PlayerPrefs.GetFloat("y");
            float z = PlayerPrefs.GetFloat("z");
            player.transform.position = new Vector3(x,y,z);
        }

        
    }

   
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            affiche = !affiche;

            panelMenu.SetActive(affiche);

        }

        if (affiche)
        {
            Time.timeScale = 0;
        }

        else
        {

            Time.timeScale = 1;

        }
      
    }
    
    public void Save()
    {
        Debug.Log("Appel Save");
        PlayerPrefs.SetString("scene", SceneManager.GetActiveScene().name);
        PlayerPrefs.SetFloat("x", player.transform.position.x);
        PlayerPrefs.SetFloat("y", player.transform.position.y);
        PlayerPrefs.SetFloat("z", player.transform.position.z);
    }

    public void Continue()
    {

        affiche = !affiche;

        panelMenu.SetActive(affiche);

        if (affiche)
        {
            Time.timeScale = 0;
        }

        else
        {

            Time.timeScale = 1;

        }

    }
            
}

Re: Poblème sauvegarde

Publié : 19 Jan 2020 17:39
par EmileF
Salut,

Une petite question: C'est quoi cette condition pour lire tes données

Code : Tout sélectionner

if(PlayerPrefs.GetInt("load")==1)
dans ton code save il n'y a pas de int sauvegardé, tu devrais commenter cette ligne de condition dans ton script, je pense que c'est elle qui gène

Re: Poblème sauvegarde

Publié : 19 Jan 2020 17:47
par wolf03
EmileF a écrit :
19 Jan 2020 17:39
Salut,

Une petite question: C'est quoi cette condition pour lire tes données

Code : Tout sélectionner

if(PlayerPrefs.GetInt("load")==1)
dans ton code save il n'y a pas de int sauvegardé, tu devrais commenter cette ligne de condition dans ton script, je pense que c'est elle qui gène

Cette condition va avec ce code sur mon script pour mes boutons du menu

Code : Tout sélectionner

 public class uiscript : MonoBehaviour
{
    private void Start()
    {
        PlayerPrefs.SetInt("load", 0);
    }

    public void PlayGame()
    {

        SceneManager.LoadScene("scenes 1");
        
    }

    public void ExitGame()
    {

        Application.Quit();

    }

    public void LoadGame()
    {
        
        if(PlayerPrefs.HasKey("x"))
        {
            PlayerPrefs.SetInt("load", 1);
            SceneManager.LoadScene(PlayerPrefs.GetString("niveau"));
        }
    }
}
Et donc permet de charger mes nouvelles données quand load est sur true et non false

Re: Poblème sauvegarde

Publié : 19 Jan 2020 18:21
par Aelhan
Et si cette condition tu la mettais plutôt dans ton start ? En gros :

Code : Tout sélectionner

private void Start()
     if(PlayerPrefs.HasKey("x"))
        {
            PlayerPrefs.SetInt("load", 1);
        }else
    {
        PlayerPrefs.SetInt("load", 0);
    }
    
Par contre je trouve que tu es vraiment beaucoup à jouer avec les playersprefs, ce ne serait pas plus sûr et plus stable avec des variables toutes simples dans certains cas ? J'ai l'impression que tu les utilises parfois pour faire un raccourci pour utiliser une variable d'un autre script.

Re: Poblème sauvegarde

Publié : 19 Jan 2020 18:23
par EmileF
As-tu fait un essai avec cette ligne commentée ?

Dans ton Start tu as

Code : Tout sélectionner

PlayerPrefs.SetInt("load", 0);
qui , à mon avis vient contredire le:

Code : Tout sélectionner

            PlayerPrefs.SetInt("load", 1);
            SceneManager.LoadScene(PlayerPrefs.GetString("niveau"));
 
car tu as loadScene ensuite qui peut appeler ce Start avant le Start de la classe saveScript

Re: Poblème sauvegarde

Publié : 19 Jan 2020 18:56
par wolf03
Aelhan a écrit :
19 Jan 2020 18:21
Et si cette condition tu la mettais plutôt dans ton start ? En gros :

Code : Tout sélectionner

private void Start()
     if(PlayerPrefs.HasKey("x"))
        {
            PlayerPrefs.SetInt("load", 1);
        }else
    {
        PlayerPrefs.SetInt("load", 0);
    }
    
Par contre je trouve que tu es vraiment beaucoup à jouer avec les playersprefs, ce ne serait pas plus sûr et plus stable avec des variables toutes simples dans certains cas ? J'ai l'impression que tu les utilises parfois pour faire un raccourci pour utiliser une variable d'un autre script.

Oui je vais essayer avec ça pour voir, merci.
Ensuite oui j’utilise beaucoup mes playerprefs mais c’est un des seule truc que je connais réellement, comme dis cela fais à peine deux semaines que j’apprends la programmation donc je ne connais pas encore tout 😅

Re: Poblème sauvegarde

Publié : 19 Jan 2020 19:01
par wolf03
EmileF a écrit :
19 Jan 2020 18:23
As-tu fait un essai avec cette ligne commentée ?

Dans ton Start tu as

Code : Tout sélectionner

PlayerPrefs.SetInt("load", 0);
qui , à mon avis vient contredire le:

Code : Tout sélectionner

            PlayerPrefs.SetInt("load", 1);
            SceneManager.LoadScene(PlayerPrefs.GetString("niveau"));
 
car tu as loadScene ensuite qui peut appeler ce Start avant le Start de la classe saveScript
Sans doute après je vais essayer comme a dit Aelhan peut être cela fonctionnera t’il .