Instance
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
L'instance est la classe de base pour toutes les classes dans la hiérarchie des classes Roblox qui peuvent faire partie du modèle de données. Il n'est pas possible de créer directement d'objets d'instance.
L'instance a une fonction spéciale appelée Instance.new() qui est utilisée pour créer des objets via le code. Cette fonction prend le nom de la classe comme un paramètre et renvoie l'objet créé. Les classes et les services abstraits ne peuvent pas être créés avec la fonction instance.new.
Résumé
Propriétés
Détermine si un Instance et ses descendants peuvent être clonés à l'aide de Instance:Clone() , et peuvent être sauvegardés/publiés.
Ensemble de capacités autorisées à être utilisées pour les scripts à l'intérieur de ce conteneur.
Un identifiant non unique de la Instance .
Détermine le parent hiérarchique de la Instance.
Une propriété obsolète qui protégeait autrefois les objets CoreGui.
Transforme l'instance en conteneur sandboxé.
Méthodes
Applique une étiquette à l'instance.
Cette fonction détruit tous les enfants d'une instance.
Créez une copie d'une instance et de tous ses descendants, en ignorant les instances qui ne sont pas Archivable .
Définit la propriété Instance.Parent sur nil, verrouille la propriété Instance.Parent et désactive toutes les connexions, puis appelle Destroy sur tous les enfants.
Retourne le premier ancêtre de la Instance dont le Instance.Name est équivalent au nom donné.
Retourne le premier ancêtre de la Instance dont le Object.ClassName est équivalent au nom donné.
Retourne le premier ancêtre de la Instance pour lequel Object:IsA() retourne vrai pour le nom donné.
Retourne le premier enfant de la Instance trouvé avec le nom donné.
Retourne le premier enfant de la Instance dont le ClassName est équivalent au nom donné.
Retourne le premier enfant de la Instance pour lequel Object:IsA() retourne vrai pour le nom donné.
Renvoie le premier descendant trouvé avec le Instance.Name donné.
Retourne le Actor associé à l'instance, si nécessaire.
Renvoie la valeur qui a été attribuée au nom de l'attribut donné.
Renvoie un événement qui se déclenche lorsque l'attribut donné change.
Renvoie un dictionnaire des attributs de l'instance.
Retourne un tableau contenant tous les enfants de l'instance.
Renvoie une chaîne de caractères codée de l'ID de débogage utilisée à l'intérieur par Roblox.
Renvoie un tableau contenant tous les descendants de l'instance.
Renvoie une chaîne décrivant l'ancestral de l'instance.
Obtient une tableau des toutes les balises appliquées à l'instance.
Vérifiez si l'instance a une étiquette donnée.
Retourne vrai si un Instance est un ancêtre du descendant donné.
Retourne vrai si un Instance est un descendant de l'ancêtre donné.
Supprime une étiquette de l'instance.
Définit l'attribut avec le nom donné à la valeur donnée.
Retourne le enfant de la Instance avec le nom donné. Si l'enfant n'existe pas, il générera la colonne actuelle jusqu'à ce qu'il le fasse.
Évènements
Feu quand la propriété Instance.Parent de l'objet ou l'un de ses ancêtres est modifiée.
Tire toujours quand une propriété est modifiée sur le Instance .
Feu après qu'un objet soit associé à ce Instance .
Tire après qu'un enfant soit retiré de ce Instance .
Feux après qu'un descendant ait été ajouté à la Instance .
Tire immédiatement avant qu'un descendant de la Instance ne soit supprimé.
Tire immédiatement avant (ou est retardé jusqu'à après) que l'instance soit détruite via Instance:Destroy() .
Propriétés
Archivable
Cette propriété détermine si l'instance devrait être incluse lorsque l'expérience est publiée ou enregistrée, ou lorsque Clone() est appelé sur l'un des ancêtres de l'instance. L'appel Clone() directement sur une instance retournera nil si cette instance
La copie d'un objet dans Studio en utilisant les options <a href="/reference/engine/databases">Dupliquer</a> ou <a href>/reference/engine/databases">Copier</a> / <a href="https://www.datascience.ai/fr/databases/">Coller\ ignore sa propre propriété <a href="https://www.datascience.ai/fr/databases/">Class.Instance.Archivable|Archivable\ et définira <a
local part = Instance.new("Part")print(part:Clone()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
Le ensemble de capacités autorisées à être utilisées pour les scripts à l'intérieur de cette instance. Pour que les capacités prennent effet, la propriété Instance.Sandboxed doit être activée.
Cette propriété est utilisée par une fonctionalitéexpérimentale. Voir la page Capabilités de script pour plus de détails.
Name
Un identifiant non unique de la Instance .
Cette propriété est un identifiant qui décrit un objet. Les noms ne sont pas nécessairement des identifiants uniques, cependant ; plusieurs enfants d'un objet peuvent partager le même nom. Les noms sont utilisés pour organiser la hiérarchie des objets, ainsi que permettre aux scripts d'accéder à des objets spécifiques. Le nom d'une instance ne peut pas dépasser 100 caractères en taille.
Le nom d'un objet est souvent utilisé pour accéder à l'objet via la hiérarchie de modèle de données en utilisant les méthodes suivantes :
local baseplate = workspace.Baseplatelocal baseplate = workspace["Baseplate"]local baseplate = workspace:FindFirstChild("BasePlate")
Pour rendre un objet accessible en utilisant l'opérateur dot, le nom d'un objet doit suivre une certaine syntaxe. Le nom d'un objet doit commencer par un tiret ou une lettre. Le reste du nom ne peut contenir que des lettres, des chiffres ou des tirets (pas d'autres caractères spéciaux). Si le nom d'un objet ne respecte pas cette syntaxe, il ne sera pas accessible à l'aide de l'opérateur dot et Lua ne le interprétera pas comme un identifiant.
Si plus d'un objet avec le même nom est frère, toute tentative d'indexer un objet par ce nom retournera le seul des objets trouvés similaire à Instance:FindFirstChild() , mais pas toujours l'objet souhaité. Si un objet spécifique doit être accédé via le code, il est recommandé de lui donner un nom unique, ou de garantir que l'un de ses frères ne partage pas le même nom que lui.
Remarquez qu'un nom complet montrant la hiérarchie de l'instance peut être obtenu en utilisant Instance:GetFullName() .
Parent
La propriété parent détermine le parent hiérarchique de la Instance. La terminologie suivante est couramment utilisée lorsque l'on parle de la façon dont cette propriété est configurer:
- Un objet est un enfant ( associé à ) un autre objet lorsque son parent est défini sur cet objet.
- Les descendants d'un Instance sont les enfants de cet objet, plus les descendants des enfants aussi.
- Les ancêtres d'une Class.Instance sont tous les objets d'origine d'une instance.
C'est à partir de cette propriété que de nombreux autres membres de l'API obtiennent leur nom, tels que GetChildren et FindFirstChild .
La fonction Remove définie cette propriété comme nul. L'appel de Destroy définira le parent d'un Instance et de tous ses descendants comme nul, et également 1>verrouiller1> le parent de l'objet détruit. Une erreur se produit lorsque le parent d'un objet détruit
Cette propriété est également utilisée pour gérer si un objet existe dans le jeu ou nécessite une suppression. As long que l'objet est parent dans le DataModel, est stocké dans une variable, ou est référencé par une autre propriété d'objet, l'objet reste dans le jeu. Sinon, l'objet sera automat
Les objets récemment créés en utilisant Instance.new() n'auront pas de parent, et ne seront généralement visibles ou fonctionnels qu'une fois qu'un a été configurer. La création la plus élémentaire d'un objet a deux étapes : la création de l'objet, puis la définition de son parent.
-- Create a part and parent it to the workspacelocal part = Instance.new("Part")part.Parent = workspace-- Instance new can also take Parent as a second parameterInstance.new("NumberValue", workspace)
Lorsqu'une modification est apportée à certaines propriétés lorsqu'une instance est parentée dans le DataModel, le moteur peut nécessiter d'exécuter des tâches supplémentaires à l'intérieur (pour des choses comme la réplication, la rendu et la disposition de l'interface graphique). Lorsque c'est possible, modifiez les propriétés d'une instance avant de configurer son parent, plutôt que de le faire après, pour éviter de faire ce travail en double.
Réplication d'objets
Un objet créé par le serveur ne se répliquera pas aux clients jusqu'à ce qu'il soit parenté à un objet que l'on réplique. Lors de la création d'un objet, il est recommandé de set Parent last . Cela garantit que l'objet se réplique une fois, au lieu de répliquer de nombreux changements de propriété.
local part = Instance.new("Part") -- Évitez d'utiliser le deuxième paramètre icipart.Anchored = truepart.BrickColor = BrickColor.new("Really red")-- Potentiellement de nombreux autres changements de propriétés pourraient aller ici ici ...-- Définir toujours le parent dernier !part.Parent = workspace
Cependant, si vous parentalisez vos parties à un Model dont le parent n'a pas encore été défini, alors parentaliser chacune de vos parties à ce modèle est ok car le modèle n'aurait pas encore été répliqué.
RobloxLocked
Cette propriété est utilisée pour protéger les objets dans le service CoreGui contre d'être modifiés par des utilisateurs de manière non autorisée. Elle a été obsolète et ne fait rien.
Sandboxed
Transforme l'instance en conteneur de sandbox. Les conteneurs de sandbox sont une fonctionnalité expérimentale qui limite les actions que les scripts à l'intérieur d'un conteneur spécifique peuvent exécuter.
Voir la page Capabilités du script pour plus de détails.
UniqueId
Méthodes
AddTag
Cette méthode applique une étiquette à l'instance, avec aucun effet si l'étiquette est déjà appliquée. Ajouter avec succès une étiquette fera apparaître un signal créé par CollectionService:GetInstanceAddedSignal() avec le tag donné.
Notez que lorsque vous marquez une instance, il est courant que certaines ressources soient utilisées pour donner la fonctionnalité de la balise, par exemple des connexions d'événement ou des tables. Pour éviter les fuites de mémoire, il est une bonne idée de les nettoyer (désconnecter, définir à
Paramètres
Retours
ClearAllChildren
Cette fonction détruit tous les enfants d'une instance.
En tant que Instance:Destroy() aussi appelle lui-même les enfants d'un objet sur lequel il est utilisé, cette fonction détruira tous les descendants.
Alternatives à ClearAllChildren
Si le développeur ne souhaite pas détruire tous les descendants, il devrait utiliser Instance:GetChildren() ou Instance:GetDescendants() pour parcourir un objet et sélectionner ce à quoi il faut détruire. Par exemple, l'exemple de code suivant détruira toutes les parties dans un objet.
for _, instance in object:GetDescendants() doif instance:IsA("BasePart") theninstance:Destroy()endend
Retours
Échantillons de code
local part = Instance.new("Part")
-- add some sparkles
for _ = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
end
print("Part has", #part:GetChildren(), "children")
--> Part has 3 children
part:ClearAllChildren()
print("Part has", #part:GetChildren(), "children")
--> Part has 0 children
Clone
Clone crée une copie d'une instance et de tous ses descendants, enignorant toutes les instances qui ne sont pas Archivable . La copie de la racine de l'instance est renvoyée par cette mé
Si une propriété de référence telle que ObjectValue.Value est définie dans une instance clonée, la valeur de la propriété de la copie dépend de la valeur de l'original :
- Si une propriété de référence fait référence à une instance qui a été également clonée, la copie fera référence à la copie.
- Si une propriété de référence fait référence à un objet qui n'a pas été cloné , la même valeur est maintenue dans la copie.
Retours
Échantillons de code
local Workspace = game:GetService("Workspace")
-- Get a reference to an existing object
local model = script.Parent.Model
-- Create a clone of the model
local clone = model:Clone()
-- Move the clone so it's not overlapping the original model
clone:PivotTo(model.PrimaryPart.CFrame - (Vector3.xAxis * 10))
-- Add the clone to the Workspace
clone.Parent = Workspace
Destroy
Définit la propriété Instance.Parent sur nil, verrouille la propriété Instance.Parent et désconnecte toutes les connexions, puis appelle Destroy sur tous les enfants. Cette fonction est la façon correcte de disposer des objets qui ne sont plus requis. L'abandon d'objets inutiles est important, car les objets et les connexions inutilisés dans un lieu utilisent de la
Conseil : Après avoir appelé la destruction sur un objet, définissez n'importe quelle variable se référant à l'objet (ou ses descendants) à zéro. Cela empêche votre code d'accéder à quoi que ce soit pour faire avec l'objet.
local part = Instance.new("Part")part.Name = "Hello, world"part:Destroy()-- Ne faites pas ça :print(part.Name) --> "Bonjour, monde"-- Faites ceci pour empêcher la ligne ci-dessus de fonctionner :part = nil
Une fois qu'un Instance a été détruit par cette méthode, il ne peut pas être réutilisé car la propriété Instance.Parent est verrouillée. Pour temporairement supprimer un objet, définissez Parent à zéro au lieu de cela. Par exemple :
object.Parent = nilwait(2)object.Parent = workspace
Pour détruire un objet après une certaine durée, utilisez Debris:AddItem() .
Retours
Échantillons de code
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
Retourne le premier ancêtre de la Instance dont le Instance.Name est équivalent au nom donné.
Cette fonction fonctionne à l'envers, ce qui signifie qu'elle commence à l'instancemême Instance.Parent et fonctionne jusqu'au DataModel. Si aucun ancêtre correspondant n'est trouvé, il renvoie zéro.
La séquence de code suivante trouverait le premier ancêtre de l'objet nommé « Car ».
local car = object:FindFirstAncestor("Car")
Pour les variantes de cette fonction qui trouvent des ancêtres d'une classe spécifique, veuillez voir Instance:FindFirstAncestorOfClass() et Instance:FindFirstAncestorWhichIsA().
Paramètres
Le Instance.Name à rechercher.
Retours
FindFirstAncestorOfClass
Retourne le premier ancêtre de la Instance dont le Object.ClassName est équivalent au nom donné.
Cette fonction fonctionne à l'envers, ce qui signifie qu'elle commence à l'instancemême Instance.Parent et fonctionne jusqu'au DataModel. Si aucun ancêtre correspondant n'est trouvé, il renvoie zéro.
Une utilisation courante de cette fonction est de trouver le Model un BasePart appartenant. Par exemple :
local model = part:FindFirstAncestorOfClass("Model")
Cette fonction est une variante de Instance:FindFirstAncestor() qui vérifie la propriété Object.ClassName plutôt que Instance.Name . 1> Class.Instance:FindFirstAncestorWhichIsA()1> existe également, en utilisant la méthode 4> Class.Object:IsA()4> au lieu
Paramètres
Le Object.ClassName à rechercher.
Retours
FindFirstAncestorWhichIsA
Retourne le premier ancêtre de la Instance pour lequel Object:IsA() retourne vrai pour le nom donné.
Cette fonction fonctionne à l'envers, ce qui signifie qu'elle commence à l'instancemême Instance.Parent et fonctionne jusqu'au DataModel. Si aucun ancêtre correspondant n'est trouvé, il renvoie zéro.
Contrairement à Instance:FindFirstAncestorOfClass(), cette fonction utilise Object:IsA() qui respecte l'héritage des classes. Par exemple :
print(part:IsA("Part")) --> trueprint(part:IsA("BasePart")) --> trueprint(part:IsA("Instance")) --> true
Ainsi, l'exemple de code suivant renverra le premier ancêtre BasePart, indépendamment de si c'est un WedgePart, MeshPart ou 1> Class.Part1>.
local part = object:FindFirstAncestorWhichIsA("BasePart")
Voir aussi, Instance:FindFirstAncestor() .
Paramètres
Le Object.ClassName à rechercher.
Retours
FindFirstChild
Retourne le premier enfant de la Instance avec le nom donné,
ou nil si tel enfant n'existe pas. Si l'option recursive argument est vrai, cette fonction recherche tous les descendants plutôt que seulement les enfants immédients de la Instance .
Vérification de l'existence d'un objet
FindFirstChild est nécessaire si vous devez vérifier qu'un objet existe avant de continuer. Essayer d'indexer un enfant par nom en utilisant l'opérateur dot lance une erreur si l'enfant n'existe pas.
-- Les erreurs de ligne suivantes s'appliquent si la partie n'existe pas dans l'espace de travail :workspace.Part.Transparency = 0.5
Utilisez FindFirstChild pour vérifier d'abord la partie, puis utilisez une if- statement pour exécuter le code qui en a besoin.
local part = workspace:FindFirstChild("Part")if part thenpart.Transparency = 0.5end
Recherche d'un enfant dont le nom correspond à une propriété
Parfois, le Name d'un objet est le même que celui d'une propriété de son Parent . Lors de l'utilisation de l'opérateur de point, les propriétés prennent la priorité sur les enfants s'ils partagent un nom.
Dans l'exemple suivant, un Folder nommé « Color » est ajouté à un Part qui a également la propriété Part.Color. 1>Class.Part.Color1> fait référence au 4>Datatype.Color34>, non pas au dossier.
local part = Instance.new("Part")local folder = Instance.new("Folder")folder.Name = "Color"folder.Parent = partlocal c = part.Color --> Une couleur 3local c2 = part:FindFirstChild("Color") --> The Folder
L'avantage de l'utilisation de FindFirstChild() de cette façon est que l'introduction de nouvelles propriétés n'impose pas de risque sur votre code.
Note de performance
FindFirstChild() prend environ 20 % de temps en plus que l'utilisation de l'opérateur de point et est presque 8 fois plus long que simplement
Paramètres
Le Instance.Name à rechercher.
Whether or not la recherche devrait être exécutée de manière récursive.
Retours
Échantillons de code
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
Retourne le premier enfant de la Instance dont le ClassName est équivalent au nom donné.
Si aucun enfant correspondant n'est trouvé, cette fonction renvoie zéro.
Contrairement à Instance:FindFirstChildWhichIsA() cette fonction ne renvoie que les objets dont la classe correspond à l'identifiant donné, en ignorant l'héritage de classe.
Les développeurs à la recherche d'un enfant par nom devraient utiliser Instance:FindFirstChild() à la place.
Paramètres
Le Object.ClassName à rechercher.
Retours
Échantillons de code
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid
while not humanoid do
humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
character.ChildAdded:Wait()
end
end
FindFirstChildWhichIsA
Retourne le premier enfant de la Instance pour lequel Object:IsA() retourne vrai pour le nom donné.
Si aucun enfant correspondant n'est trouvé, cette fonction renvoie zéro. Si l'argument argument recursif facultatif est vrai, cette fonction recherche tous les descendants plutôt que les enfants immédients de la Instance .
Contrairement à Instance:FindFirstChildOfClass() , cette fonction utilise Object:IsA() qui respecte l'héritage des classes. Par exemple :
print(part:IsA("Part")) --> vraiprint(part:IsA("BasePart")) --> vraiprint(part:IsA("Instance")) --> true
Ainsi, l'exemple de code suivant renverra le premier enfant BasePart , indépendamment de s'il s'agit d'un WedgePart , MeshPart ou 1> Class.Part1> .
local part = object:FindFirstChildWhichIsA("BasePart")
Les développeurs à la recherche d'un enfant par nom, devraient utiliser Instance:FindFirstChild() à la place.
Paramètres
Le Object.ClassName à rechercher.
Whether or not la recherche devrait être exécutée de manière récursive.
Retours
FindFirstDescendant
Renvoie le premier descendant trouvé avec le Instance.Name donné.
Cette méthode est désactivée et ne peut pas être utilisée. Pour trouver le premier descendant d'une instance, essayez d'utiliser le recursive paramètre sur Instance:FindFirstChild() à la place.
Paramètres
Le Instance.Name à rechercher.
Retours
GetActor
Si le Instance est un Actor, le Actor lui-même est renvoyé. Sinon, son ancêtre le plus proche 1> Class.Actor1> est renvoyé. Si aucun ancêtre n'est un 4> Class.Actor4>, le résultat est 7> nil7>.
Retours
GetAttribute
Cette méthode renvoie la valeur qui a été attribuée au nom de l'attribut donné. Si aucun attrait n'a été attribué, nil est renvoyé.
Par exemple, le code suivant définit et obtient ensuite la valeur de l'attribut Position de départ de l'instance :
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Voir aussi
- Instance:SetAttribute() qui définit l'attribut avec le nom donné à la valeur donnée.
- Instance:GetAttributes() qui renvoie un dictionnaire de paires de valeur clé pour chaque l'attributs de l'instance.
Paramètres
Nom de l'attribut récupéré.
Retours
La valeur qui a été attribuée au nom de l'attribut donné. Si aucun attrait n'a été attribué, nil est renvoyée.
GetAttributeChangedSignal
Cette fonction renvoie un événement qui se comporte exactement comme l'événement Changed, sauf qu'il ne s'exécute que lorsque l'attribut spécifié change ; Effectivement, il est similaire à GetPropertyChangedSignal() mais pour les attributs.
Il est généralement une bonne idée d'utiliser cette méthode au lieu d'une connexion à Changed avec une fonction qui vérifie le nom de l'attribut. Les appels suivants à cette méthode sur le même objet avec le même nom d'attribut retournent le même événement.
L'exemple de code suivant renvoie un signal qui déclenche la fonction attributeChanged() lorsque la partie change de Position d'origine :
local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local function attributeChanged()
print("Attribute changed")
end
part:GetAttributeChangedSignal("InitialPosition"):Connect(attributeChanged)
Voir aussi Instance.AttributeChanged qui se déclenche chaque fois qu'une propriété est modifiée sur l'instance.
Paramètres
Le nom de l'attribut spécifié pour lequel le signal de changement est renvoyé.
Retours
Événement qui se déclenche lorsque l'attribut donné change.
GetAttributes
Cette méthode renvoie un dictionnaire de paires de valeur clé pour chaque属性 où la clé est le nom de l'attribut et la valeur est une valeur non nil.
Par exemple, le code suivant génère les attributs et les valeurs d'une instance :
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(name .. " = " .. value)end
Voir aussi Instance:GetAttribute() qui renvoie la valeur qui a été attribuée au nom de l'attribut donné.
Retours
Un dictionnaire de couples de valeurs de chaîne pour chaque属性 où la chaîne est le nom de la valeur et la valeur n'est pas un nombre nul.
GetChildren
Retourne un tableau (une table numérotée) contenant tous les enfants directs de l'instance, ou tous les Instance dont le Parent est égale à l'objet. L' array peut être itéré en utilisant un tableau itérable à l'aide d'un générateur ou d'un for-Loop numérique :
-- Exemple de boucle numériquelocal children = workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
-- Exemple de boucle génériquelocal children = workspace:GetChildren()for i, child in children doprint(child.Name .. " is child number " .. i)end
Les enfants sont triés par l'ordre dans lequel leur propriété Parent a été définie sur l'objet.
Voir également la fonction GetDescendants.
Retours
Un tableau contenant les enfants de l'instance.
Échantillons de code
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
Renvoie une chaîne de caractères codée de l'ID de débogage utilisée à l'intérieur par Roblox.
Remarque :
- Cet élément est protégé. Tenter d'utiliser l'objet dans un Script ou un LocalScript provoquera une erreur
- Un ID de débogage est un ID utilisé dans les processus de débogage. Il permet à un débogueur de lire chaque instruction avant qu'une application ne le traite. Tous les objets dans Roblox agissent comme des processus et chaque instruction de run (ou « code ») qui peut être débogué si nécessaire
- Ceci peut être utile pour les plugins qui doivent distinguer des objets similaires l'un de l'autre (tels que les objets qui partagent le même nom)
Paramètres
La longueur du champ de vision.
Retours
La chaîne ID Debug.
Échantillons de code
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
Cette méthode d'objet renvoie un tableau qui contient tous les descendants de cet objet. Contrairement à Instance:GetChildren(), qui ne renvoie que les enfants immédients d'un objet, cette méthode trouve tous les enfants de l'objet, tous les enfants de ces enfants et ainsi de suite.
Retours
Un tableau contenant les descendants de l'instance.
Échantillons de code
local descendants = workspace:GetDescendants()
-- Loop through all of the descendants of the Workspace. If a
-- BasePart is found, the code changes that parts color to green
for _, descendant in pairs(descendants) do
if descendant:IsA("BasePart") then
descendant.BrickColor = BrickColor.Green()
end
end
GetFullName
Retourne une chaîne描述instances'ancêtres. La chaîne est une concaténation des Name de l'objet et de ses ancêtres, séparés par des points. Le DataModel ( game ) n'est pas considéré. Par exemple, un
Lorsqu'elle est appelée sur un Instance qui n'est pas un descendant du DataModel, cette fonction prend en compte tous les ancêtres jusqu'à et y compris le plus haut sans un Parent.
Cette fonction est utile pour le journaling et le débogage. Vous ne devriez pas essayer d'analyser la chaîne renvoyée pour une opération utile ; cette fonction ne dépasse pas les points (ou tout autre symbole) dans les noms d'objets. En d'autres termes, bien que son sortie soit souvent un identifiant Lua valide, il n'est pas garanti.
Retours
Échantillons de code
-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire
local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera
GetTags
Cette méthode renvoie un tableau des balises appliquées à l'instance donnée, sous forme de chaînes. Vous pouvez ajouter des balises soit dans Studio dans la fenêtre propriétés ou au moment de l'exécution avec AddTag() .
Cette méthode est utile lorsque vous voulez faire quelque chose avec plusieurs balises sur une instance à la fois. Cependant, il est inefficace d'utiliser cette méthode pour vérifier l'existence d'une seule balise ; au lieu de cela, utilisez HasTag() pour vérifier une balise spécifique.
Retours
HasTag
Cette méthode renvoie true si la balise fournie a été ajoutée à l'objet. Vous pouvez ajouter des balises soit dans Studio dans la fenêtre propriétés ou au moment de l'exécution avec AddTag() .
Paramètres
Retours
IsAncestorOf
Retourne vrai si un Instance est un ancêtre du descendant donné.
Un Instance est considéré comme l'ancêtre d'un objet si son ancêtre est défini comme Instance.Parent ou l'un de ses parents Instance.Parent est défini comme 2>Class.Instance2>.
Voir aussi, Instance:IsDescendantOf() .
Paramètres
Retours
Échantillons de code
local Workspace = game:GetService("Workspace")
local spawnLocation = Workspace.SpawnLocation
local decal = spawnLocation.Decal
-- These statements are true
print(Workspace:IsAncestorOf(spawnLocation))
print(Workspace:IsAncestorOf(decal))
print(spawnLocation:IsAncestorOf(decal))
-- These statements are false
print(spawnLocation:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(spawnLocation))
IsDescendantOf
Retourne vrai si un Instance est un descendant de l'ancêtre donné.
Un Instance est considéré comme le descendant d'un objet si le parent ou l'un des parents de l'instance est défini sur l'objet.
Remarquez, DataModel est un descendant de zéro. Cela signifie que IsDescendantOf ne peut pas être utilisé avec un paramètre de zéro pour vérifier si un objet a été supprimé.
Voir aussi, Instance:IsAncestorOf() .
Paramètres
Retours
Échantillons de code
local part = Instance.new("Part")
print(part:IsDescendantOf(game))
--> false
part.Parent = workspace
print(part:IsDescendantOf(game))
--> true
part.Parent = game
print(part:IsDescendantOf(game))
--> true
RemoveTag
Cette méthode supprime une balise d'une instance. Elle ne lancera pas d'erreur si l'objet n'a pas la balise. La suppression réussie d'une balise déclenchera un signal créé par CollectionService:GetInstanceRemovedSignal() avec la balise donnée.
Notez que lorsque vous marquez une instance, il est courant que certaines ressources soient utilisées pour donner la fonctionnalité de la balise, par exemple des connexions d'événements ou des tables. Pour éviter les fuites de mémoire, il est une bonne idée de les nettoyer (désconnecter, définir à nil , etc.) lorsque vous n'en avez plus pour une balise.
Paramètres
Retours
SetAttribute
Cette méthode définit l'attribut avec le nom donné à la valeur donnée. Si la valeur donnée est nil, l'attribut sera supprimé, car nil est renvoyé par défaut.
Par exemple, le code suivant définit l'attribut Position de départ de l'instance à Vector3.new(0, 10, 0) :
local part = workspace.Partpart:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Limites
Exigences de nomination et de restreintions :
- Les noms ne doivent utiliser que des caractères alphanumériques et tiret.
- Aucun espace ou symbole unique n'est autorisé.
- Les chaînes doivent comporter moins de 100 caractères.
- Les noms ne sont pas autorisés à commencer par RBX à moins que le locuteur ne soit un script de cœur Roblox (réservé aux Roblox).
Lorsque vous essayez de définir une valeur d'attribut à un tapernon pris en charge, une erreur se produira.
Voir aussi :
- Instance:GetAttribute() qui renvoie la valeur qui a été attribuée au nom de l'attribut donné.
- Instance:GetAttributes() qui renvoie un dictionnaire de paires de valeur clé pour chaque l'attributs de l'instance.
Paramètres
Nom de l'attribut à configurer.
La valeur à laquelle l'attribut spécifié doit être défini.
Retours
WaitForChild
Retourne le enfant de la Instance avec le nom donné. Si l'enfant n'existe pas, il générera la colonne actuelle jusqu'à ce qu'il existe. Si le timeOut paramètre est spécifié, ce méthode sera expiré après le nombre spécifié de secondes et retournera nil.
Utilisation principale
WaitForChild() est extrêmement important lorsque vous travaillez sur le code exécuté par le client dans un LocalScript. Le moteur Roblox ne garantit pas le temps ou l'ordre dans
Notes
- Cette fonction ne se produit pas si un enfant avec le nom donné existe lorsque l'appel est effectué.
- Instance:FindFirstChild() est une alternative plus efficace à WaitForChild() pour les objets qui sont supposés exister.
- Si un appel à cette méthode dépasse 5 secondes sans retourner, et aucun timeOut paramètre n'a été spécifié, une avertissement sera imprimé à la sortie que le thread peut produire infiniment.
Paramètres
Le Instance.Name à rechercher.
Un paramètre de temps d'expiration facultatif.
Retours
Échantillons de code
local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")
Évènements
AncestryChanged
Feu quand la propriété Instance.Parent de l'objet ou l'un de ses ancêtres est modifiée.
Cet événement inclut deux paramètres, enfant et parent. enfant fait référence au 1> Class.Instance1> dont le 4> Class.Instance.Parent4> a été modifié. 7> parent7> fait référence à ce nouveau 0> Class.Instance.Parent0> de l'instance.
Vous pouvez utiliser cet événement pour suivre la suppression d'une instance dans Studio, comme la suppression manuelle dans l'Explorateur ou via un plugin. Si vous devez détecter quand une instance est détruite en utilisant Instance:Destroy() , utilisez l'événement Instance.Destroying à la place.
Paramètres
La Instance dont le Instance.Parent a été modifié.
Le nouveau Instance.Parent de la Instance dont le Instance.Parent a été modifié.
Échantillons de code
local Workspace = game:GetService("Workspace")
local redPart = script.Parent.RedPart
local bluePart = script.Parent.BluePart
local changingPart = script.Parent.ChangingPart
-- Change the color of changingPart based on it's Parent
local function onAncestryChanged(part: Part, parent: Instance)
if parent == redPart then
changingPart.Color = Color3.new(1, 0, 0)
elseif parent == bluePart then
changingPart.Color = Color3.new(0, 0, 1)
else
changingPart.Color = Color3.new(1, 1, 1)
end
print(`{part.Name} is now parented to {parent.Name}`)
end
changingPart.AncestryChanged:Connect(onAncestryChanged)
-- Set changingPart's Parent property to different instances over time
while true do
task.wait(2)
changingPart.Parent = redPart
task.wait(2)
changingPart.Parent = bluePart
task.wait(2)
changingPart.Parent = Workspace
end
AttributeChanged
Cet événement se déclenche toujours que lorsqu'une attribut est modifié sur l'instance, y compris lorsqu'un attribut est défini sur nil . Le nom de l'attribut modifié est passé à la fonction connectée.
Par exemple, le code suivant se connecte à la fonction attributeChanged() pour tirer chaque fois que l'un des attributs de la partie change :
local part = workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)
Voir aussi Instance:GetAttributeChangedSignal() qui renvoie un événement qui se déclenche lorsqu'une attribut spécifié change.
Paramètres
Le nom de l'attribut qui a été changé.
ChildAdded
Feu après qu'un objet soit associé à ce Instance .
Remarquez que lors de l'utilisation de cette fonction sur un client pour détecter les objets créés par le serveur, il est nécessaire d'utiliser Instance:WaitForChild() lors de l'indexation de ces descendants d'objets. C'est parce que l'objet et ses descendants ne sont pas garantis de se reproduire du serveur au client simultanément. Par exemple :
workspace.ChildAdded:Connect(function(child)
-- need to use WaitForChild as descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)
Remarquez que cette fonction ne fonctionne que pour les enfants immédients de la Instance. Pour une fonction qui capture tous les descendants, utilisez Instance.DescendantAdded.
Voir aussi, Instance.ChildRemoved .
Paramètres
Échantillons de code
local function onChildAdded(instance)
print(instance.Name .. " added to the workspace")
end
workspace.ChildAdded:Connect(onChildAdded)
local part = Instance.new("Part")
part.Parent = workspace --> Part added to the Workspace
ChildRemoved
Tire après qu'un enfant soit retiré de ce Instance .
Supprimé fait référence à quand le parent d'un objet est changé de ce Instance à quelque chose d'autre que ceci Instance . Notez que cet événement se déclenchera également lorsqu'un enfant est détruit (utilisant Instance:Destroy() ) car la fonction d'destruction définira le parent d'un objet à zéro.
Cette fonction ne fonctionne que pour les enfants immédients de la Instance. Pour une fonction qui capture tous les descendants, utilisez Instance.DescendantRemoving .
Voir aussi Instance.ChildAdded .
Paramètres
Échantillons de code
local function onChildRemoved(instance)
print(instance.Name .. " removed from the workspace")
end
workspace.ChildRemoved:Connect(onChildRemoved)
local part = Instance.new("Part")
part.Parent = workspace
task.wait(2)
part:Destroy()
DescendantAdded
L'événement DescendantAdded se déclenche après qu'un descendant ait été ajouté à la Instance .
En tant que descendant, ajouter des feux pour chaque descendant, parenting un objet à la Instance va tirer l'événement pour cet objet et tous ses descendants individuellement.
Les développeurs ne se souciaient que des enfants immédients de la Instance devraient utiliser Instance.ChildAdded à la place.
Voir également Instance.DescendantRemoving .
Paramètres
Échantillons de code
local function onDescendantAdded(descendant)
print(descendant)
end
workspace.DescendantAdded:Connect(onDescendantAdded)
local part = Instance.new("Part")
part.Parent = workspace
DescendantRemoving
Cet événement se déclenche immédiatement avant que la racine Instance change de sorte qu'une instance descendant ne soit plus une descendant. 1> Class.Instance:Destroy()|Destroy()1> change le parent de l'instance 4> Class.Instance.Parent|Parent4> en
Puisque cet événement se déclenche avant la suppression de la descendant, le parent de la descendant sera modifié au moment de l'événement se déclenchant. Si le descendant est également un enfant direct de la parent, cet événement se déclenchera avant Instance.ChildRemoved .
Si un descendant a des enfants, cet événement se déclenche avec le descendant en premier, suivi de ses descendants.
Avertissement
Cet événement se déclenche avec l'objet descendant qui est en cours de suppression. Tenter de définir le Parent de l'objet descendant à quelque chose d'autre échouera. Voici un exemple qui montre cela :
workspace.DescendantRemoving:Connect(function(descendant)
-- Do not manipulate the parent of the descendant in this function!
-- This event fires BECAUSE the parent was manipulated, and the change hasn't happened yet
-- Therefore, it is problematic to change the parent like this:
descendant.Parent = game
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
Voir aussi DescendantAdded .
Paramètres
Échantillons de code
workspace.DescendantRemoving:Connect(function(descendant)
print(descendant.Name .. " is currently parented to " .. tostring(descendant.Parent))
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
--> Part is currently parented to Workspace
print(part.Parent)
--> nil
Destroying
Le Instance ne sera jamais supprimé de la mémoire tant qu'une fonction connectée l'utilise toujours. Cependant, si la fonction se termine à tout moment, le Instance et ses descendants seront parentés à nil .
Si la propriété Workspace.SignalBehavior est définie sur Enum.SignalBehavior.Immediate, cet événement se déclenche immédiatement avant que la Instance ou l'un de ses ancêtres ne soit détruit avec 1> Class.Instance:Destroy()1>.
Si la propriété Workspace.SignalBehavior est réglée sur Enum.SignalBehavior.Deferred, cet événement se déclenche au prochain point de résumé, qui sera après la destruction d'un des ancêtres de Instance ou de l'un de ses ancêtres avec 1> Class.Instance:Destroy()1>.
Avec le comportement Deferred, la connexion d'un script à son propre événement Instance.Destroying est problématique, car le script sera détruit avant que le rappel ne puisse être appelé (ce qui signifie qu'il ne s'exécutera pas).
Lors de la suppression d'un Instance dans Studio, comme la suppression manuelle à travers l' Explorateur ou via un plugin, la Instance n'est pas détruite. Au lieu de cela, le parent est réglé sur 1> nil1> que vous pouvez suivre avec 4> Class.Instance.AncestryChanged4> .
Échantillons de code
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())