Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

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
Répondre
MisterJedi
Messages : 85
Inscription : 29 Août 2015 16:57

Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par MisterJedi » 07 Oct 2015 22:56

Bonjour,
j'aimerai changer la sensibilité de mon personnage avec un UI slider qui se trouve dans une scène options. Seulement voilà pour pouvoir changer la valeur, je dois mettre le gameobject du perso dans mon UI Slider (comme dans cette vidéo vers 6:15 https://unity3d.com/learn/tutorials/mod ... /ui-slider ). Seulement ce gameobject se trouve dans une autre scène donc je ne vois pas comment je pourrais modifier une de ses valeurs à moins de bidouiller qque chose avec les PlayersPref mais bon je préfère vous demander car je connais pas du tout le fonctionnement de ces UI Slider.

merci.

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

Re: Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par boubouk50 » 08 Oct 2015 09:14

Je ne sais pas trop, mais je pense qu'il faut que tu jettes un oeil de ce côté-ci:
OnValueChanged ()
L'exemple est clair je pense pour créer un appel vers une autre fonction.
"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
froll
Messages : 58
Inscription : 30 Jan 2012 17:45

Re: Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par froll » 08 Oct 2015 09:32

Je ne pense pas que ce soit possible directement.

Par contre tu peux utiliser un managerScene, que tu implémentes avec des paramètres à mettre en place lors du chargement de la scène. Ainsi ta modification ne sera pas appliquée directement, mais au chargement de la scène.
Mon projet : D.O.M, un jeux vidéo space opéra
Site web de mon projet

MisterJedi
Messages : 85
Inscription : 29 Août 2015 16:57

Re: Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par MisterJedi » 11 Oct 2015 23:01

Bon j'ai réussi. J'ai mis le gameobject en prefab et j'ai pu modifier sa valeur.
Par contre j'ai un autre problème. Quand j'initialise la valeur du slider par défaut à 600 par exemple, et que je l'ajuste ensuite à 800, dans le jeu la sensibilité est bien modifié mais quand je reviens dans la scène avec mon slider, sa valeur se remet à 600.

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

Re: Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par boubouk50 » 12 Oct 2015 09:33

S'il est dans un prefab il faut appliquer les changements (bouton Apply en haut à droite dans l'Inspector).
Si c'est un ajustement au runtime, c'est normal, il faut être en Edition pour les changements.
"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

MisterJedi
Messages : 85
Inscription : 29 Août 2015 16:57

Re: Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par MisterJedi » 13 Oct 2015 21:25

Mon slider n'est pas dans un prefab. Mais en gros je voudrai que la "move sensibility" soit initialisée à 600 comme ci-contre http://www.noelshack.com/2015-42-1444761836-1.png
Et que lorsque le joueur modifie la valeur du slider, cette valeur soit sauvegardée non seulement dans le prefab du perso (donc ça c'est déjà fait), mais aussi dans le slider en lui-même.
Je pense que y a qque chose à bricoler avec les playerpref mais j'ai deja essayé ça n'a pas fonctionné. En gros y a ça dans le script de mon perso pour changer la sensibilité :

Code : Tout sélectionner

public float XForce;

public void AdjustXForce (float newXForce) {
		XForce = newXForce;
		PlayerPrefs.SetFloat ("XForcePref", XForce);
	}
Et j'ai rajouté ce script dans mon slider :

Code : Tout sélectionner

public float slider;
	
	// Use this for initialization
	void Start () {

		slider = GetComponent<Slider> ().value;
		slider = PlayerPrefs.GetFloat ("XForcePref");
	}
mais ça fonctionne pas aparemment.


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

Re: Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par Max » 17 Oct 2015 16:44

MisterJedi a écrit :

Code : Tout sélectionner

		slider = GetComponent<Slider> ().value;
		slider = PlayerPrefs.GetFloat ("XForcePref");
mais ça fonctionne pas aparemment.
Dejà 'slider' est affecté deux fois en deux lignes. Bizarre non ?
En suite, ton PlayerPrefs.SetFloat est-il bien exécuté avant ton PlayerPrefs.GetFloat ?
Ta valeur récupérée 'slider' est elle bien injectée sur ton composant Slider ? (à priori value)
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

MisterJedi
Messages : 85
Inscription : 29 Août 2015 16:57

Re: Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par MisterJedi » 17 Oct 2015 17:56

Max a écrit :
MisterJedi a écrit :

Code : Tout sélectionner

		slider = GetComponent<Slider> ().value;
		slider = PlayerPrefs.GetFloat ("XForcePref");
mais ça fonctionne pas aparemment.
Dejà 'slider' est affecté deux fois en deux lignes. Bizarre non ?
En suite, ton PlayerPrefs.SetFloat est-il bien exécuté avant ton PlayerPrefs.GetFloat ?
Ta valeur récupérée 'slider' est elle bien injectée sur ton composant Slider ? (à priori value)

bon j'ai mis ce code et aparemment ça marche :

Code : Tout sélectionner

	public Slider _slider;
	
	void Start () {
		_slider = GetComponentInChildren<Slider> ();
		_slider.value = PlayerPrefs.GetFloat ("XForcePref");
		}
	

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

Re: Modifier la valeur d'un gameobject d'une autre scène avec un UI Slider

Message par Max » 17 Oct 2015 18:04

Cela parait en effet déjà mieux.
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

Répondre

Revenir vers « (C#) CSharp »