[RESOLU][DB/MY-AL]Comment sauvegarder la valeur d'un toggle

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
MGameur
Messages : 28
Inscription : 22 Mars 2020 21:23

[RESOLU][DB/MY-AL]Comment sauvegarder la valeur d'un toggle

Message par MGameur » 23 Oct 2020 15:18

Bonjours,

Je voudrais savoir comment sauvegarder la valeur d'un toggle (j'ai regarder sur le doc et un peut sur YouTube mais j'ai rien trouver). Je voudrais l'utiliser pour sauvegarder si le jouer veut que sont jeux soit en plein écran ou non.

Merci d'avance pour votre aide.

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: [DB/MY-AL]Comment sauvegarder la valeur d'un toggle

Message par DevAmat » 23 Oct 2020 15:51

Salut,

Tu peux le sauvegarder avec le "PlayerPrefs"

https://docs.unity3d.com/ScriptReferenc ... Prefs.html

Cela te permet de sauvegarder un "int" par exemple. Si le "toogle" est "true" tu sauvegardes "1" et si il est "false" tu sauvegardes "0".

https://docs.unity3d.com/ScriptReferenc ... etInt.html

https://docs.unity3d.com/ScriptReferenc ... etInt.html

MGameur
Messages : 28
Inscription : 22 Mars 2020 21:23

Re: [DB/MY-AL]Comment sauvegarder la valeur d'un toggle

Message par MGameur » 23 Oct 2020 16:07

je vais essayer je n'avait pas penser comme ca merci

MGameur
Messages : 28
Inscription : 22 Mars 2020 21:23

Re: [DB/MY-AL]Comment sauvegarder la valeur d'un toggle

Message par MGameur » 23 Oct 2020 16:46

Dans mon void Awak j'ai mis

Code : Tout sélectionner

if(currentFullScreen == 1)
        {
            toggle.GetComponent<Toggle>().isOn = true;
        }
        if (currentFullScreen == 0)
        {
            toggle.GetComponent<Toggle>().isOn = false;
        }
et dans mon public void SetFullscreen(bool isFullscreen) j'ai mis

Code : Tout sélectionner

if (isFullscreen == true)
        {
            currentFullScreen = 1;
            PlayerPrefs.SetFloat("FullScreen", currentFullScreen);
        }
        else
        {
            currentFullScreen = 0;
            PlayerPrefs.SetFloat("FullScreen", currentFullScreen);
        }
et ca marche merci beaucoup ^^

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: [DB/MY-AL]Comment sauvegarder la valeur d'un toggle

Message par DevAmat » 23 Oct 2020 16:56

Super!

Lorsque ton sujet est résolu édite le titre de celui-ci avec la mention: "[Résolu]".

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

Re: [DB/MY-AL]Comment sauvegarder la valeur d'un toggle

Message par boubouk50 » 23 Oct 2020 17:21

Un peu de logique:
Tu traites des conditions logiques, si tu remplaces les tests et affectation par la valeur du booléen, tu obtiens:

Code : Tout sélectionner

if (true)
	isOn = true;
if (false)
	isOn = false;
Dans tonc cas, currentFullScreen ne peut posséder que 2 valeurs (0 ou 1 pour true ou false) c'est à dire, soit l'une soit l'autre. Tu peux donc déjà supprimer le second if, car si le premier n'est pas bon, le second oui, et inversement.
Tu reviens donc à faire:

Code : Tout sélectionner

if (true)
	isOn = true;
else
	isOn = false;
Maintenant, on peut constater que isOn prend la valeur de la condition, donc plus besoin de condition, il suffit d'affecter directement le résultat:

Code : Tout sélectionner

isOn = (Condition);
Ainsi ton code est réduit à une seule affectation:

Code : Tout sélectionner

toggle.GetComponent<Toggle>().isOn = (currentFullScreen == 1);
Pour la suite, tu peux réduire la condition et sortir les redondances:
Comme précédemment, remplace par les booléens, ainsi
isFullscreen == true devient true == true (le résultat vaut true) ou false == true (le résultat vaut false).
Dans les deux cas, le résultat vaut isFullscreen, donc on peut supprimer la comparaison.
Il reste à sortir les redondances pour avoir:

Code : Tout sélectionner

if (isFullscreen )
	currentFullScreen = 1;
else
	currentFullScreen = 0;
	
PlayerPrefs.SetFloat("FullScreen", currentFullScreen);
Pour faire encore plus court mais identique dans l'opti, tu as encore:

Code : Tout sélectionner

currentFullScreen = isFullscreen ? 1 : 0;
PlayerPrefs.SetFloat("FullScreen", currentFullScreen);
"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

Répondre

Revenir vers « (C#) CSharp »