Passer au contenu principal
Version: bleeding-edge đŸ©ž

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.

tip

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()
tip

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

info

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:

Server/Index.lua
local mon_personnage = Character()
tip

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.

info

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

Server/Index.lua
mon_personnage:Destroy()
info

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:

Client/Index.lua
-- Faire en sorte qu'il soit 9h25 du matin
World.SetTime(9, 25)
tip

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.

tip

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 !