Valeurs des entités
Comment stocker des données dans des entités accessibles depuis n'importe où
Dans nanos world, il est possible de stocker des données sur des entités. Ces valeurs sont accessibles par n'importe quel Package et vous pouvez également déterminer si la valeur sera automatiquement synchronisée avec les clients.
In Base Entity page we can find the definitions of :SetValue()
and :GetValue()
methods. Also it is possible to store Values globally on Client and Server Static Classes with the same methods!
SetValue
Sur n'importe quelle entité, vous pouvez utiliser la méthode :SetValue(key, value, sync)
pour définir n'importe quelle valeur sur cette entité. Exemple :
-- Définit une valeur 'my_value' synchronisée.
my_player:SetValue("my_value", 100, true)
Il est possible de stocker des valeurs de type any, à l'exception des fonctions
.
Si vous passez sync
comme vrai, cette valeur sera automatiquement synchronisée avec tous les clients. Notez que sync
est un paramètre facultatif disponible uniquement sur le coté Serveur.
Client.SetValue() et Server.SetValue() n'auront pas le dernier paramètre sync
. En effet, la valeur n'existera que sur le côté que vous définissez.
GetValue
Après avoir été défini, vous pouvez accéder à n'importe quelle valeur de n'importe quelle entité en utilisant :GetValue(key)
sur n'importe quelle entit é que vous voulez. Si vous définissez la valeur à synchroniser sur les Clients, vous serez en mesure d'obtenir les valeurs du côté Client également. Vous pouvez passer un paramètre aditionnel fallback
qui sera retourné si la clé n'existe pas!
-- Obtient la valeur 'my_value' ou retourne '0' si aucune valeur n'est définie
locale my_value = my_player:GetValue("my_value", 0)
Soyez conscient que le stockage des entités lui-même n'annulera pas la valeur si l'entité est détruite, c'est donc une bonne pratique de valider les valeurs if avec :IsValid()
après les avoir récupérées.