Le script d'une classe est un plan en quelque sorte, on l'appelle classe, ou objet.
Si ce plan était celui d'une maison, on pourrait à partir de lui construire des maisons. Ces maisons auraient le même plan, mais chacune une adresse différente, chacune une existance aussi. Car le plan, on ne l'appelle pas une maison.
Une instance de l'objet, une instance de la classe, c'est un exemplaire de cet objet.
Dans un monde UO dasn aucun spawner, sans monstres, on peut être sûrs qu'il n'y a aucune instance d'ettin. Pourtant le script existe, l'objet existe, c'est une classe.
Lorsque le GM fait
.add ettin, il crée une instance de l'objet ettin, celle-ci aura un numéro, et sera enregistrée dans les saves.
Pour
instancier une classe dans un script, il faut appeler une méthode définie dans cette classe:
son constructeur d'instance.
Il s'agit d'une méthode qui est forcément
public, qui prend le même nom que la classe elle même (chose que les méthodes ne peuvent pas faire) et qui ne déclare aucun type de retour, pas même void (chose que les méthodes ne peuvent pas faire).
Il peut y avoir plusieurs constructeurs différents, prenant donc des arguments différents, et cepour instancier l'objet de façon différente.
Par exemple, le plupart des Items on pour constructeurs d'instance :
- Code:
-
public Banana() : this(1)
// et
public Banana(int amount)
{
Amount = amount;
}
Si on fait
new Banana(); on apelle le premier constructeur, qui appelle le second (:this() ) en passant 1 pour argument.
Alors que si on fait
new Banana(10); on appelera directement le second constructeur qui passera cette valeur à la propriété Amount.
Vous verrez un constructeur qui prend un Serial pour argument, c'est le constructeur de sérialisation (il donne le numéro sérial dont se servira le processus de sauvegarde...) Ne l'oubliez pas dans vos création.