Page 1 sur 1

Utiliser une variable string dans le code ?

Publié : 19 Mars 2020 05:40
par GameTux
Salut,

Bon cette fois je ne suis pas sûre que ce soit possible mais en gros je voudrais utiliser une variable de type string dans le code comme ça :

Code : Tout sélectionner

GetColorCar = PlayerPrefs.GetString("CarColor");
ColorCar.GetComponent<SelectColor>().GetColorCar();
En fait l'idée est la suivante, GetColorCar contient une variable string par exemple "Blue"

Dans mon script "SelectColor" il y a un "public void Blue()..."

Donc l'idée c'est d'avoir

Code : Tout sélectionner

ColorCar.GetComponent<SelectColor>().Blue();
en écrivant

Code : Tout sélectionner

ColorCar.GetComponent<SelectColor>().GetColorCar();
Si vous voyez ce que je veux dire et si c'est pas trop compliqué.

merci

Re: Utiliser une variable string dans le code ?

Publié : 19 Mars 2020 11:37
par Max
Bonjour,

tout cela parait bien compliqué et tarabiscoté...
Pourquoi ne pas simplement mémoriser dans ton PlayerPrefs la valeur de la couleur ?

Re: Utiliser une variable string dans le code ?

Publié : 19 Mars 2020 17:18
par GameTux
Eh bien en fait le PlayerPrefs contient bien la valeur de la couleur, je crois que tu n’as pas bien compris ce que je veux faire.

L'idée ici c'est d'aller chercher la valeur dans le PlayerPrefs et de l'utilisé dans le code, en gros au lieu de faire ça :

Code : Tout sélectionner

if(GetColorCar == "Blue")
{
ColorCar.GetComponent<SelectColor>().Blue();
}
Je me demandais s’il n’y avait pas une solution pour directement mettre "Blue" dans le code, avec quelque chose du genre :

Code : Tout sélectionner

ColorCar.GetComponent<SelectColor>().FromVariable(GetColorCar);
mais bon je crois que c'est pas possible.

Re: Utiliser une variable string dans le code ?

Publié : 19 Mars 2020 17:27
par boubouk50
Là, tu veux qu'une string soit interprétée comme une fonction. Ca n'arrivera pas.

Par contre, ta donnée pourrait contenir une couleur, ou un index, un clé, etc qui pourrait être interprété par la suite pour déclencher une fonction. Ce que te propose Max.

Si ce n'est pas cela, alors essaie de nous réexpliquer différemment. C'est clair pour toi mais pas forcément pour nous.

Re: Utiliser une variable string dans le code ?

Publié : 19 Mars 2020 17:47
par GameTux
Héhé ! J'ai trouvé comment faire ! https://docs.unity3d.com/ScriptReferenc ... nvoke.html

Code : Tout sélectionner

GetColorCar = PlayerPrefs.GetString("CarColor");
ColorCar.GetComponent<SelectColor>().Invoke(GetColorCar, 0f);

Re: Utiliser une variable string dans le code ?

Publié : 19 Mars 2020 17:53
par Max
GameTux a écrit :
19 Mars 2020 17:47
Héhé ! J'ai trouvé comment faire ! https://docs.unity3d.com/ScriptReferenc ... nvoke.html

Code : Tout sélectionner

GetColorCar = PlayerPrefs.GetString("CarColor");
ColorCar.GetComponent<SelectColor>().Invoke(GetColorCar, 0f);
Hmm, je ne comprends toujours trop pourquoi ne pas passer par valeur ou index (comme suggéré par Boubouk).
Sinon, Invoke n'est pas du tout prévue pour cela ceci dit (Invokes the method methodName in time seconds.).
Dans ce cas, passe par SendMessage à la limite (même si son utilisation doit rester ponctuelle pour des raisons de performance).

Re: Utiliser une variable string dans le code ?

Publié : 19 Mars 2020 20:50
par GameTux
Je ne suis pas sûre de comprendre ce que vous voulez dire par "utilisé une valeur ou un index".

Si c'est quelque chose comme ça :

Code : Tout sélectionner

if(GetColorCar == "Blue")
{
ColorCar.GetComponent<SelectColor>().Blue();
}

if(GetColorCar == "Red")
{
ColorCar.GetComponent<SelectColor>().Red();
}

Eh bien c'est simplement plus facile d'utilisé :

Code : Tout sélectionner

GetColorCar = PlayerPrefs.GetString("CarColor");
ColorCar.GetComponent<SelectColor>().Invoke(GetColorCar, 0f);
Sinon en effet "SendMessage" semble encore mieux vue que je n'ai pas besoins de timer.

Et oui ce script n'est pas dans un "update" et il ne semble pas y avoir de problème de performance pour moi.

Re: Utiliser une variable string dans le code ?

Publié : 19 Mars 2020 21:40
par Max
Ben si l'objectif est de récuper une couleur pour la voiture mémorisée dans un PlayerPrefs,
tu peux simplement faire quelque chose comme

Code : Tout sélectionner

GetColorCar = PlayerPrefs.GetString("CarColor"); // #00FF00=green #FF0000=red #0000FF=blue
ColorCar.SetColor(GetColorCar);
et dans la méthode ColorCar.SetColor(string cl), tu écrirais par exemple:

Code : Tout sélectionner

...
            Color c;
            ColorUtility.TryParseHtmlString(cl, out c);  
            GetComponent<MeshRenderer>().material.color = c;
...

Re: Utiliser une variable string dans le code ?

Publié : 20 Mars 2020 17:06
par GameTux
Ok, c'est le premier jeu que je fait et disons que j'apprends sur le tas, j'ai fait différemment et ça semble fonctionné correctement donc je vais laisser comme ça, après c'est sûre que je ne vais pas faire le jeu le mieux optimisé du monde d'ailleurs je crois même que le code de mon jeu est un peu dégueulasse.