Guide des classes
Tout ce que vous devez savoir sur les Classes
Toutes les entités du monde nanos sont représentées par une Classe. In Lua, classes are represented by tables. Cela signifie que chaque interaction avec les entités (joueurs, personnages, props, etc) est faite avec des méthodes de classe/tables suivant un schéma OOP (programmation orientée objet). Dans cette page, nous allons en expliquer plus à ce sujet.
Dans le monde de nanos, nous avons 3 types de Classes (ou structures) : Classes
, Static Classes
et Utility Classes
.
Classes
If you read our Quick Start guide, you noticed we were spawning entities in the following format:
-- Fait apparaître une entité avec un constructeur
local mon_entite = Entity()
-- Interagir avec l'entité avec ses méthodes
mon_entite:MaFonction()
L'accès aux méthodes des Entités / Objets sont faits avec :
.
Voici comment l'OOP fonctionne ! Vous créez des objets et appelez des fonctions/événements de capture sur cet objet. Contrairement aux autres jeux de script qui ont des tonnes de fonctions et d'événements globaux pour interagir avec des entités, le scripting sur Nanos World utilise une approche moderne de programmation moderne.
Héritage des Classes
Sous le capot, les classes de Nanos World suivent un modèle d'héritage, ce qui signifie que nous avons des classes parents, et que ce sont les classes enfants qui héritent de toutes les fonctions, événements et propriétés de ces parents. You will notice that all Classes that can be spawned in the world are Actors, for example in Character and Prop (which are Actors) it is possible to call the function: :SetLocation(Vector)
.
The Base Class Actor is a very important class in nanos world. Elle contient la plupart des méthodes qui sont partagées dans toutes les classes que nous avons, et aussi des Méthodes statiques pour récupérer les entités directement.
Apparition d'Entités
Faire apparaître des entités dans Nanos World est extrêmement facile et simple, disons que nous voulons faire apparaître un personnage:
local mon_personnage = Character()
Chaque classe contiendra son propre Constructeur, Propriétés, Méthodes et Événements.
Regardez toutes les classes que Nanos World fournit dans la barre latérale Référence de Scripting -> Classes.
Gardez à l'esprit que certaines classes ne peuvent être créées que par le Serveur, et que d'autres ne peuvent être créés que par le Client.
Destruction d'Entités
Toutes les classes \(sauf Player\) peuvent être détruites avec la méthode Destroy()
:
mon_personnage:Destroy()
Détruire une entité déclenchera l'événement Destroy
, et toutes les entités qui y étaient attachées seront automatiquement détachées*.
*Si vous attachez des entités avec le paramètre auto_destroy_when_detached
, toutes les entités attachées seront également détruites 😉.
Classes statiques
Les classes statiques dans le monde nanos sont des classes que vous ne pouvez pas faire apparaître. Au lieu de cela, vous pouvez utiliser leurs méthodes directement avec .
.
Par exemple, si vous voulez interagir avec le Monde (déplacer le soleil, mettre de la pluie, etc), vous aurez besoin de la classe statique World
:
-- Faire en sorte qu'il soit 9h25 du matin
World.SetTime(9, 25)
L'accès aux Classes statiques / Méthodes statiques se fait avec .
.
Classes utilitaires
Outre les classes et les classes statiques, nous avons les classes utilitaires! Celles-ci sont principalement utilisées dans l'API de Nanos World. On compte parmi ces classes: Vector, Rotator, Color, JSON et bien d'autres.
Toutes les classes utilitaires sont Open Source sur https://github.com/nanos-world/nanos-world-lua-lib. N'hésitez pas à proposer des demandes de fusion et à suggérer des modifications !