[Résolu] Des couleurs qui changent toute seules

Questions à propos du GUI, y compris la partie script.
JollyStone
Messages : 14
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)

[Résolu] Des couleurs qui changent toute seules

Message par JollyStone » 12 Jan 2020 16:11

Bonjour,

Via script, j’applique une couleur au composant Image d’un Panel UI.
Cette couleur dans le script à la valeur RGBA : 190/90/0/255
En mode Play, cette valeur s’est miraculeusement transformée en 191/91/0/255 (Valeur lue dans la fenêtre d’édition de l’Inspector). Jusque là ce n'est pas trop gênant.
Plus bizarre encore, la couleur réellement affichée dans le champs de l’Inspector et utilisée dans la fenêtre Game correspond approximativement à 255/255/11/255.

J’ai également testé dans le script la valeur RVBA 240/15/15/255.
La valeur de l’éditeur est 191/12/12/255 et la couleur réelle affichée est totalement blanche.

Est-ce quelqu'un à déjà rencontré cette bizarrerie ?
Une idée pour résoudre ce problème ?
Dernière édition par JollyStone le 13 Jan 2020 11:17, édité 1 fois.

Avatar de l’utilisateur
Max
Newser
Newser
Messages : 7565
Inscription : 30 Juil 2011 13:57

Re: Des couleurs qui changent toute seules

Message par Max » 12 Jan 2020 16:42

Bonjour,
JollyStone a écrit :
12 Jan 2020 16:11
Cette couleur dans le script à la valeur RGBA : 190/90/0/255
En mode Play, cette valeur s’est miraculeusement transformée en 191/91/0/255 (Valeur lue dans la fenêtre d’édition de l’Inspector). Jusque là ce n'est pas trop gênant.
une histoire d'arrondi je suppose, rien de bien gênant visuellement
JollyStone a écrit :
12 Jan 2020 16:11
Plus bizarre encore, la couleur réellement affichée dans le champs de l’Inspector et utilisée dans la fenêtre Game correspond approximativement à 255/255/11/255.
ça il n'y a pas de miracle. Si cela change, c'est que c'est commandé quelque part. Reste à trouver où.

Déjà, comment procèdes-tu dans ton script pour changer la couleur de l'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

JollyStone
Messages : 14
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)

Re: Des couleurs qui changent toute seules

Message par JollyStone » 12 Jan 2020 16:57

Salut Max,

Ah ! Il y a des arrondis pour des entiers (int) ?

Les valeur RGBA sont contenue dans un fichier JSON et lues depuis un script.

Code : Tout sélectionner

private void LoadGameData ()
	{
		string filePath = Path.Combine (Application.streamingAssetsPath, gameDataFileName);
		if (File.Exists (filePath)) {
			string dataAsJson = File.ReadAllText (filePath);
			GameData loadedData = JsonUtility.FromJson<GameData> (dataAsJson);
			allRoundData = loadedData.allRoundData;
		} else {
			Debug.LogError ("Impossible de charger les données");
		}
	}
Ensuite appliquée à l’objet.

Code : Tout sélectionner

public Color categoryColor;
	public Image backgroundImage;
…
categoryColor = new Vector4 (currentRoundData.r, currentRoundData.g, currentRoundData.b, currentRoundData.a);
backgroundImage = GameObject.Find ("BackgroundPanel").GetComponent<Image> ();
		backgroundImage.color = categoryColor;
J’espère que ces informations suffisent, sinon je posterai l’entièreté des scripts.

Avatar de l’utilisateur
Max
Newser
Newser
Messages : 7565
Inscription : 30 Juil 2011 13:57

Re: Des couleurs qui changent toute seules

Message par Max » 12 Jan 2020 17:08

JollyStone a écrit :
12 Jan 2020 16:57
Ah ! Il y a des arrondis pour des entiers (int) ?
Les composant RGBA sont généralement passés par des floats compris entre 0 et 1.0f. Voir par exemple la doc sur Color.

Après, je ne vois pas trop le lien entre tes deux scripts.
Le second, qui se charge de changer la couleur de backgroundImage le fait à partir de d'une variable publique.
backgroundImage semble récupéré par un Find. Mais pour categoryColor comment est-elle affecté. Par le biais de l'inspector, ou suite au chargement des données (script 1) ?
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

JollyStone
Messages : 14
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)

Re: Des couleurs qui changent toute seules

Message par JollyStone » 12 Jan 2020 17:32

En effet, ça semble un peu tordu comme méthode.
il s’agit au départ du Quizz (tuto Unity : https://learn.unity.com/tutorial/live-s ... 002053b652) que je tente d’améliorer.
Donc, je crée 6 catégories de questions. Chaque catégorie a sa propre couleur, déterminée dans le fichier JSON.
Le premier script charge les données du fichier JSON (les questions, et notamment la couleur de la catégorie).
Le second script construit la couleur selon les données du JSON, récupère l’objet backgroundImage et lui applique la couleur.

[Édit]
Étrangement, ce problème survient pour deux des 6 catégories. Les 4 autres fonctionnes parfaitement.
Quelque soit la catégorie sélectionnée, le reste est construit de la même manière.

Avatar de l’utilisateur
Max
Newser
Newser
Messages : 7565
Inscription : 30 Juil 2011 13:57

Re: Des couleurs qui changent toute seules

Message par Max » 12 Jan 2020 17:41

JollyStone a écrit :
12 Jan 2020 17:32
Le second script construit la couleur selon les données du JSON, récupère l’objet backgroundImage et lui applique la couleur.
As tu vérifié à coup de Debug.Log si les valeurs récupées et qui sont affecté à backgroundImage sont bonnes et cohérentes ?
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

JollyStone
Messages : 14
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)

Re: Des couleurs qui changent toute seules

Message par JollyStone » 12 Jan 2020 17:46

Oui, bien sûr.
Les valeurs affichées dans la console sont bien égales aux valeurs du fichier JSON.

Je peux te fournir tous les scripts. Est-ce seulement possible par message personnel ?

Avatar de l’utilisateur
Max
Newser
Newser
Messages : 7565
Inscription : 30 Juil 2011 13:57

Re: Des couleurs qui changent toute seules

Message par Max » 12 Jan 2020 17:51

Le mieux c'est souvent un package, avec une scène de test reproduisant le soucis. Au moins, tu as tous les éléments pouvant interférer, script comme GameObjects et leurs componants.
Et oui, si tu préfères, par MP il n'y a pas de soucis.
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

Avatar de l’utilisateur
Max
Newser
Newser
Messages : 7565
Inscription : 30 Juil 2011 13:57

Re: Des couleurs qui changent toute seules

Message par Max » 12 Jan 2020 18:57

Ok, en regardant tes scripts, les données de couleur récupérées sont en fait dans ce
format: public int r, g, b, a;.
Le soucis (et cela rejoint un peu ce que je disais plus haut), c'est que quand tu fais
un backgroundImage.color = categoryColor;, categoryColor étant un Color, il attend théoriquement 4 float (de valeurs comprises entre 0 à 1.0f). Pas d'int (dont les valeurs seraient de 0 à 255).

Ce que tu peux faire, c'est (pour reprendre la syntaxe utilisée dans ton script) écrire:

Code : Tout sélectionner

categoryColor = new Vector4 (currentRoundData.r/255.0f, currentRoundData.g/255.0f, currentRoundData.b/255.0f, currentRoundData.a/255.0f);
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

JollyStone
Messages : 14
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)

Re: Des couleurs qui changent toute seules

Message par JollyStone » 13 Jan 2020 11:16

Ah oui ! C'est subtile.
Je trouve ça un peu tordu pour un débutant.
J'avais commencé avec des floats puis suis passé en int car le problème était déjà présent.

Un tout grand merci pour ton aide Max, ça fonctionne parfaitement maintenant pour toutes les catégories.
Bonne journée !

Répondre

Revenir vers « L'interface GUI »