non en faite j'ai des classes filles qui dérive de la classe mère Effect, et j'ai fait une public list de toutes mes classes filles, et je souhaiterai assigner a mes cartes un effets aléatoire, il faut que j'assigne un script fille tout en restant en classe mère en faisant un cast.
Mes classes filles n'ont pas de variable ou de function en plus juste un override des méthodes mère
donc en gros
list<Effect> EffectCard contient 3 classes Deal, Heal, ManaUp
Code : Tout sélectionner
public class Effect(){
public int dmg;
public virtual void effectActive(){}
}
public class Deal : Effect(){
public int dmg = 2;
public override void effectActive(){}
}
public class Heal: Effect(){
public int dmg = 0;
public override void effectActive(){}
}
public class ManaUp: Effect(){
public int dmg = 1;
public override void effectActive(){}
}
Sinon autre questions Quand j'essaye de lire une variable a partir de ma liste mère toutes mes variables filles sont a 0
Code : Tout sélectionner
Debug.Log(EffectCard[0].dmg); // return 0 alors que ma variable est a 2 ???
Debug.Log(EffectCard[2].dmg); // return 0 alors que ma variable est a 1 ???
Edit: Probleme est reglé erreur de ma part, il ne faut pas redéclarer les variables mais faire un constructeur ou l'on assigne la variable
voici ce que sa donne en codage
Code : Tout sélectionner
public class Deal : Effect(){
public Deal (){dmg = 2;}
public override void effectActive(){}
}
public class Heal: Effect(){
public Heal(){dmg = 0;}
public override void effectActive(){}
}
public class ManaUp: Effect(){
public ManaUp(){dmg = 1;}
public override void effectActive(){}
}