Page 1 sur 1

[RESOLU][DB-AL]Redéfinir simplement toutes les valeurs des propriétés d'un objet dans cet objet

Publié : 06 Déc 2018 19:09
par eljeronimooo
Bonjour :)

Petite question : comment puis-je redéfinir dans un objet toutes les valeurs de mes propriétés avec les valeurs d'un objet de même type ?

Un exemple d'illustration :

Code : Tout sélectionner

	public class MapGen : EditorWindow
{
    public int timeHours;
    public int timeMinutes;
	
	static MapGen MyFunction(){
		MapGen LoadMapGen = JsonUtility.FromJson<MapGen>({"timeHours":12,"timeMinutes":00});
		this = LoadMapGen; //C'est ici que le problème ce trouve, 'this' n'existe qu'en lecture seule :(
	}
	
	//Au chargement du script l'heure est 00:30
	void Awake(){
		timeHours = 00;
		timeMinutes = 30;
	}
	
	//Au lancement du rendu l'heure est 12:00
	void Start(){
		MyFunction();
	}
}
Existe t'il un autre moyen que de le faire manuellement ? Comme avec :

Code : Tout sélectionner

timeHours = LoadMapGen.timeHours;
timeMinutes = LoadMapGen.timeMinutes;
Merci par avance :)

Re: [DB-AL]Redéfinir simplement toutes les valeurs des propriétés d'un objet dans cet objet

Publié : 07 Déc 2018 10:47
par Sebela
Hello !

Le "this" de la classe se rapporte à sa référence, et tu ne peux pas réassigner la référence de la classe.
Tu peux cependant assigner tous les champs de la classe.
Si ton script n'hérite pas de MonoBehaviour, tu peux utiliser un/des constructeur(s) :

Code : Tout sélectionner

public class MapGen : EditorWindow
{
    public int timeHours;
    public int timeMinutes;
    
    public MapGen (int hours, int minutes){
    	timeHours = hours;
    	timeMinutes = minutes;
    }
}

Re: [DB-AL]Redéfinir simplement toutes les valeurs des propriétés d'un objet dans cet objet

Publié : 11 Déc 2018 05:18
par eljeronimooo
Merci Sebela pour ton aide.

Pour mon cas la solution été dans l'organisation des classes. J'ai créer une classe MapGenController qui est celle depuis laquelle j'importe mes propriétés que je copie dans la classe MapGen.

Note : comme ma classe hérite de MonoBehaviour, il faut utiliser FromJsonOverwrite au lieu de FromJson !

Code : Tout sélectionner

static MapGen MyFunction(){
	MapGenController LoadMapGen = JsonUtility.FromJsonOverwrite<MapGenController >({"timeHours":12,"timeMinutes":00}, this);
}
Résolu :)

Re: [RESOLU][DB-AL]Redéfinir simplement toutes les valeurs des propriétés d'un objet dans cet objet

Publié : 11 Déc 2018 12:18
par Sebela
Avec plaisir :)
Content que tu aies pu trouver une solution à ton problème :super: