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

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
eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

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

Message par eljeronimooo » 06 Déc 2018 19:09

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 :)
Dernière édition par eljeronimooo le 11 Déc 2018 05:19, édité 1 fois.

Avatar de l’utilisateur
Sebela
Messages : 141
Inscription : 25 Juin 2014 21:39

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

Message par Sebela » 07 Déc 2018 10:47

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;
    }
}

eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

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

Message par eljeronimooo » 11 Déc 2018 05:18

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 :)

Avatar de l’utilisateur
Sebela
Messages : 141
Inscription : 25 Juin 2014 21:39

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

Message par Sebela » 11 Déc 2018 12:18

Avec plaisir :)
Content que tu aies pu trouver une solution à ton problème :super:

Répondre

Revenir vers « (C#) CSharp »