Instance
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Instance est la classe de base pour toutes les classes dans la hiérarchie de classe Roblox qui peuvent faire partie de l'arbre DataModel.
Il n'est pas possible de créer directement des objets racine Instance , mais le constructeur spécial Instance.new() crée des objets via du code, en prenant le nom de la classe en paramètre et en retournant l'objet créé.
Résumé
Propriétés
Détermine si un Instance et ses descendants peuvent être clonés à l'aide de Instance:Clone() et s'ils peuvent être sauvegardés/publiés.
Le jeu de capacités pouvant être utilisé pour les scripts à l'intérieur de ce conteneur.
Un identifiant non unique du Instance .
Détermine le parent hiérarchique du Instance .
Une propriété obsolète qui protégeait autrefois les objets CoreGui.
Transforme l'instance en conteneur sandboxé.
Un identifiant unique pour l'instance.
Méthodes
Applique une balise à l'instance.
Cette fonction détruit tous les enfants d'une instance.
Créer 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 à nil, verrouille la propriété Instance.Parent et déconnecte toutes les connexions, puis appelle Destroy() sur tous les enfants.
Renvoie le premier ancêtre du Instance dont le Instance.Name est égal au nom donné.
Renvoie le premier ancêtre du Instance dont le Object.ClassName est égal à la classe donnée.
Retourne le premier ancêtre du Instance pour lequel Object:IsA() renvoie vrai pour la classe donnée.
Renvoie le premier enfant du Instance trouvé avec le nom donné.
Retourne le premier enfant du Instance dont le ClassName est égal au nom de classe donné.
Retourne le premier enfant du Instance pour lequel Object:IsA() renvoie vrai pour la classe donnée.
Renvoie le premier descendant trouvé avec le donné Instance.Name .
Retourne le Actor associé à l'instance, si nécessaire.
Renvoie la valeur qui a été attribuée au nom d'attribut donné.
Renvoie un événement qui se déclenche lorsque l'attribut donné change.
Renvoie un dictionnaire des attributs de l'instance.
Renvoie un tableau contenant tous les enfants de l'instance.
Renvoie une chaîne codée de l'ID de débogage utilisé internement par Roblox.
Renvoie un tableau contenant tous les descendants de l'instance.
Renvoie une chaîne décrivant l'ascendance de l'instance.
Renvoie la valeur stylée ou explicitement modifiée de la propriété spécifiée, ou la valeur de propriété par défaut si elle n'a pas été stylée/modifiée.
Obtient une liste de toutes les balises appliquées à l'instance.
Vérifiez si l'instance a une balise donnée.
Renvoie vrai si un Instance est un ancêtre du descendant donné.
Renvoie true si un Instance est un descendant de l'ancêtre donné.
Renvoie true si la valeur stockée dans la propriété spécifiée est égale au code instantané par défaut.
Supprime une balise de l'instance.
Réinitialise une propriété à sa valeur par défaut.
Définit l'attribut avec le nom donné à la valeur donnée.
Retourne l'enfant du Instance avec le nom donné. S'il n'existe pas, il produira le thread actuel jusqu'à ce qu'il le fasse.
Évènements
S'enflamme lorsque la propriété Instance.Parent de l'objet ou l'une de ses ancêtres est modifiée.
S'enflamme chaque fois qu'un attribut est modifié sur le Instance.
Feux après qu'un objet soit parenté à ceci Instance .
Feux après qu'un enfant a été retiré de ce Instance .
Feux après qu'un descendant ait été ajouté à la Instance.
S'enflamme immédiatement avant que le descendant du Instance soit supprimé.
Il se déclenche immédiatement avant (ou est reporté jusqu'à ce que) l'instance soit détruite via Instance:Destroy() .
Il se déclenche chaque fois que toute propriété de style est modifiée sur l'instance, y compris lorsqu'une propriété est définie sur nil .
Propriétés
Archivable
Cette propriété détermine si l'instance doit être incluse lors de la publication ou de l'enregistrement de l'expérience, ou lorsque Clone() est appelé sur l'un des ancêtres de l'instance.Appeler directement sur une instance retournera si cette instance n'est pas pas .
Copier un objet dans Studio en utilisant les options Dupliquer ou Copier / Coller ignorera sa propre propriété Archivable et définira Archivable à true pour la copie.
local part = Instance.new("Part")print(part:Clone()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
L'ensemble des capacités pouvant ê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 fonctionnalité expérimentale. Voir capacités de script pour plus de détails.
Name
Un identifiant non unique du Instance .Les noms sont utilisés pour garder l'architecture d'objets organisée, tout en permettant 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 du modèle de données en utilisant les méthodes suivantes :
local Workspace = game:GetService("Workspace")local baseplate = Workspace.Baseplatelocal baseplate = Workspace["Baseplate"]local baseplate = Workspace:FindFirstChild("BasePlate")
Afin de rendre un objet accessible en utilisant l'opérateur point ( . ), son nom doit commencer par un tiret ou une lettre, et le reste du nom ne peut contenir que des lettres, des chiffres ou des tirets (aucun autre caractère spécial).Si le nom d'un objet ne suit pas cette syntaxe, il ne sera pas accessible en utilisant l'opérateur point et Luau ne l'interprétera pas comme identifiant.
Si plus d'un objet avec le même nom sont des frères et sœurs, toute tentative d'indexer un objet par ce nom ne retournera qu'un seul des objets, similaire à Instance:FindFirstChild() , mais pas toujours l'objet souhaité.Si un objet spécifique doit être accédé par le biais de code, il est recommandé de lui donner un nom unique ou de garantir que aucun de ses frères ne partage le même nom.
Voir aussi Instance:GetFullName() pour obtenir un nom complet comprenant la hiérarchie de l'objet.
Parent
La propriété Parent détermine le parent hiérarchique du Instance.La terminologie suivante est couramment utilisée lorsqu'on parle de la façon dont cette propriété est définie :
Un objet est un enfant de, ou est parent de, un autre objet lorsque son est défini sur cet objet.
Les descendants de d'un Instance sont les enfants de cet objet, plus les descendants des enfants aussi.
Les ancêtres d'un Instance sont tous les objets dont l'instance est une descendance.
C'est de la propriété Parent que beaucoup d'autres membres de l'API obtiennent leur nom, comme GetChildren() et FindFirstChild().Cette propriété est également utilisée pour gérer si un objet existe dans l'expérience ou doit être supprimé.Tant que le parent d'un objet est dans le DataModel , est stocké dans une variable ou est référencé par la propriété d'un autre objet, l'objet reste dans l'expérience ; sinon, l'objet sera automatiquement supprimé.
L'appel de définira la propriété de et de tous ses descendants à , et également verrouillera la propriété ».Une erreur se produit lors du définition de la Parent d'un objet détruit.
Les objets nouvellement créés en utilisant Instance.new() n'auront pas de parent et ne seront généralement pas visibles ou fonctionnels jusqu'à ce qu'un soit défini.
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 qui est répliqué.Lors de la création d'un objet et du réglage de nombreuses propriétés, il est recommandé de définir la propriété dernière .Cela garantit que l'objet se réplique une fois, au lieu de répliquer de nombreux changements de propriété.
local Workspace = game:GetService("Workspace")-- Définir le parent de la nouvelle instance en dernier (recommandé)local part = Instance.new("Part")part.Position = Vector3.new(0, 10, 0)part.Parent = Workspace
Cependant, si les parties de parentage sont dirigées vers un Model dont le parent n'a pas encore été défini, diriger chaque partie vers ce modèle est acceptable puisque le modèle ne serait pas répliqué.
RobloxLocked
Cette propriété était utilisée pour protéger les objets dans le service CoreGui de modifications effectuées par les utilisateurs de manière non autorisée.Il a été obsolète et ne fait rien.
Sandboxed
Transforme l'instance en un conteneur sandboxé , une fonctionnalité expérimentale qui limite les actions que les scripts dans un conteneur spécifique peuvent effectuer.Voir capacités de script pour plus de détails.
UniqueId
Un identifiant unique pour l'instance, distinct de Instance.Name qui n'est pas nécessairement unique.
Méthodes
AddTag
Cette méthode applique une balise à l'instance, sans effet si la balise est déjà appliquée.Ajouter avec succès une balise déclenchera un signal créé par CollectionService:GetInstanceAddedSignal() avec la balise donnée.
Avertissements
Les balises d'une instance qui ont été ajoutées côté client seront supprimées si le serveur ajoute ou supprime plus tard une balise sur cette instance car le serveur réplique toutes les balises ensemble et remplace les balises précédentes.
Lors du marquage d'une instance, il est courant que certaines ressources soient utilisées pour donner au tag sa fonctionnalité, par exemple des connexions d'événements ou des tables.Pour empêcher les fuites de mémoire, il est une bonne idée de les nettoyer (débrancher, réinitialiser à nil , etc.) lorsqu'elles ne sont plus nécessaires pour une balise.Faites ceci lorsque vous appelez Instance:RemoveTag(), appelez Instance:Destroy() ou dans une fonction connectée à un signal retourné par CollectionService:GetInstanceRemovedSignal() .
Paramètres
Retours
ClearAllChildren
Cette fonction détruit tous les enfants et les descendants d'une instance.
local part = Instance.new("Part")-- Add some sparklesfor i = 1, 3 dolocal sparkles = Instance.new("Sparkles")sparkles.Parent = partlocal sc = Instance.new("Sparkles")sc.Parent = sparklesendprint("Children:", #part:GetChildren()) --> Children: 3part:ClearAllChildren()print("Children:", #part:GetChildren()) --> Children: 0
Si vous ne souhaitez pas détruire tous les enfants et les descendants, utilisez Instance:GetChildren() ou Instance:GetDescendants() pour parcourir ces enfants/descendants et sélectionnez ce que vous devez détruire.Par exemple, l'exemple de code suivant détruira tous les BaseParts descendant d'un Model :
local Workspace = game:GetService("Workspace")local model = Workspace:FindFirstChild("TestModel")for _, descendant in model:GetDescendants() doif descendant:IsA("BasePart") thendescendant:Destroy()endend
Retours
Clone
Clone() crée une copie d'une instance et de tous ses descendants, en ignorant toutes les instances qui ne sont pas Archivable .Une copie de l'instance racine est retournée par cette méthode et son Parent est défini sur nil .Notez que si l'instance elle-même a Archivable définie à false, cette fonction retournera nil .
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 se réfère à une instance qui a été également clonée, la copie se référera à la copie.
- Si une propriété de référence se réfère à 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 à nil, verrouille la propriété Instance.Parent et déconnecte toutes les connexions, puis appelle Destroy() sur tous les enfants.Cette fonction est la bonne façon de se débarrasser d'objets qui ne sont plus nécessaires.
L'élimination des objets inutiles est importante, car les objets inutiles et les connexions dans un endroit utilisent la mémoire qui peut entraîner des problèmes de performance sérieux au fil du temps.
En tant que meilleure pratique après avoir appelé Destroy() sur un objet, définissez toutes les variables qui font référence à l'objet (ou à ses descendants) à nil .Cela empêche votre code d'accéder à quoi que ce soit ayant à voir avec l'objet.
local part = Instance.new("Part")part.Name = "Hello, world"part:Destroy()-- Ne faites pas cela :print(part.Name) --> "Bonjour, monde"-- Faites ceci pour empêcher la ligne ci-dessus de fonctionner :part = nil
Une fois qu'une Instance a été détruite par cette méthode, elle ne peut pas être réutilisée car la propriété Instance.Parent est verrouillée.Pour temporairement supprimer un objet au lieu de le détruire, définissez Parent à nil .Par exemple :
local Workspace = game:GetService("Workspace")object.Parent = niltask.wait(2)object.Parent = Workspace
Pour détruire un objet après un certain nombre de temps, utilisez Debris:AddItem() .
Retours
Échantillons de code
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
Renvoie le premier ancêtre du Instance dont le Instance.Name est égal au nom donné.
Cette fonction fonctionne en aval, ce qui signifie qu'elle commence à l'instant immédiat de l'instance Instance.Parent et fonctionne vers le DataModel.Si aucun ancêtre correspondant n'est trouvé, il renvoie nil .
Le fragment de code suivant 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, voir Instance:FindFirstAncestorOfClass() et Instance:FindFirstAncestorWhichIsA() .
Paramètres
Le Instance.Name à rechercher.
Retours
FindFirstAncestorOfClass
Renvoie le premier ancêtre du Instance dont le Object.ClassName est égal à la classe donnée.
Cette fonction fonctionne en aval, ce qui signifie qu'elle commence à l'instant immédiat de l'instance Instance.Parent et fonctionne vers le DataModel.Si aucun ancêtre correspondant n'est trouvé, il renvoie nil .
Un usage commun de cette fonction est de trouver le appartient à. 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.Instance:FindFirstAncestorWhichIsA() existe également, en utilisant la méthode Object:IsA() au lieu de respecter l'héritage de classe.
Paramètres
Le Object.ClassName à rechercher.
Retours
FindFirstAncestorWhichIsA
Retourne le premier ancêtre du Instance pour lequel Object:IsA() renvoie vrai pour la classe donnée.
Cette fonction fonctionne en aval, ce qui signifie qu'elle commence à l'instant immédiat de l'instance Instance.Parent et fonctionne vers le DataModel.Si aucun ancêtre correspondant n'est trouvé, il renvoie nil .
Contrairement à Instance:FindFirstAncestorOfClass(), cette fonction utilise Object:IsA() qui respecte l'héritage de classe. Par exemple :
print(part:IsA("Part")) --> trueprint(part:IsA("BasePart")) --> trueprint(part:IsA("Instance")) --> true
La suite du code suivante retournera donc le premier ancêtre , ou , indépendamment du fait qu'il s'agisse d'un , ou .
local part = object:FindFirstAncestorWhichIsA("BasePart")
Voir aussi Instance:FindFirstAncestor() .
Paramètres
Le Object.ClassName à rechercher.
Retours
FindFirstChild
Retourne le premier enfant du Instance avec le nom donné, ou nil si aucun tel enfant n'existe.Si l'argument facultatif recursive optionnel est true, cette fonction recherche tous les descendants plutôt que les enfants immédiats du 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.Tenter d'indexer un enfant par son nom en utilisant l'opérateur point provoque une erreur si l'enfant n'existe pas.
local Workspace = game:GetService("Workspace")-- Les erreurs suivantes se produisent si la partie n'existe pas dans l'espace de travailWorkspace.Part.Transparency = 0.5
Une meilleure approche consiste à utiliser FindFirstChild() pour vérifier d'abord Part , puis à utiliser une déclaration if pour exécuter du code qui en a besoin.
local Workspace = game:GetService("Workspace")local part = Workspace:FindFirstChild("Part")if part thenpart.Transparency = 0.5end
Trouver 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 point, les propriétés prennent le pas sur les enfants s'ils partagent un nom.
Dans l'exemple suivant, un Folder appelé Color est ajouté à un Part qui a également la propriété Part.Color.Remarquez que part.Color se réfère à la valeur de propriété Color3, pas à l'instance enfant Folder.Un avantage de l'utilisation de FindFirstChild() est que l'introduction de nouvelles propriétés n'impose pas de risque pour votre code.
local part = Instance.new("Part")local folder = Instance.new("Folder")folder.Name = "Color"folder.Parent = partlocal c1 = part.Color -- La propriétélocal c2 = part:FindFirstChild("Color") -- The child folder
Notes de performances
FindFirstChild() prend environ 20 % plus de temps que l'utilisation de l'opérateur point et presque 8 fois plus de temps que simplement le stockage d'une référence à un objet.Vous devez donc éviter de l'appeler dans du code dépendant de la performance, comme dans des boucles serrées ou des fonctions connectées à RunService.Heartbeat et RunService.PreRender .Au lieu de cela, stockez le résultat dans une variable, ou envisagez d'utiliser ChildAdded ou WaitForChild() pour détecter quand un enfant d'un nom donné devient disponible.
Paramètres
Le Instance.Name à rechercher.
Si la recherche doit être menée de manière récursive ou non.
Retours
Échantillons de code
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
Retourne le premier enfant du Instance dont le ClassName est égal au donné className .Contrairement à Instance:FindFirstChildWhichIsA() , cette fonction ne renvoie que des objets dont la classe correspond à className , en ignorant l'héritage de classe.Si aucun enfant correspondant n'est trouvé, cette fonction renvoie nil .
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 du Instance pour lequel Object:IsA() renvoie vrai pour la classe donnée.
Si aucun enfant correspondant n'est trouvé, cette fonction renvoie nil .Si l'argument récursif facultatif est vrai, cette fonction recherche tous les descendants plutôt que les enfants immédiats de la Instance .
Contrairement à Instance:FindFirstChildOfClass(), cette fonction utilise Object:IsA() qui respecte l'héritage de classe. Par exemple :
print(part:IsA("Part")) --> vraiprint(part:IsA("BasePart")) --> vraiprint(part:IsA("Instance")) --> true
Par conséquent, l'exemple de code suivant retournera le premier enfant BasePart , indépendamment du fait qu'il s'agisse d'un WedgePart , MeshPart ou Part .
local part = object:FindFirstChildWhichIsA("BasePart")
Les développeurs qui recherchent un enfant par nom devraient utiliser Instance:FindFirstChild() à la place.
Paramètres
Le Object.ClassName à rechercher.
Si la recherche doit être menée de manière récursive ou non.
Retours
FindFirstDescendant
Renvoie le premier descendant trouvé avec le donné Instance.Name .
Cette méthode est désactivée et ne peut pas être utilisée.Pour trouver le premier descendant d'une instance, envisagez d'utiliser le paramètre recursive 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 Actor est retourné.Si aucun ancêtre n'est un Actor , le résultat est nil .
Retours
GetAttribute
Cette méthode renvoie la valeur qui a été attribuée au nom d'attribut donné. Si aucun attribut n'a été attribué, nil est renvoyé.
Par exemple, le fragment de code suivant définit puis obtient la valeur de l'attribut InitialPosition de l'instance :
local Workspace = game:GetService("Workspace")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 clé-valeur pour chacun des attributs de l'instance.
Paramètres
Le nom de l'attribut récupéré.
Retours
La valeur qui a été attribuée au nom d'attribut donné. Si aucun attribut n'a été attribué, nil est retournée.
GetAttributeChangedSignal
Cette fonction renvoie un événement qui se comporte exactement comme l'événement Changed, sauf qu'il ne se déclenche que lorsque l'attribut spécifique change ; efficacement, c'est similaire à GetPropertyChangedSignal() 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 ultérieurs à 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 l'attribut de la partie InitialPosition change :
local Workspace = game:GetService("Workspace")
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 que n'importe quel attribut est modifié sur l'instance.
Paramètres
Le nom de l'attribut spécifié pour lequel le signal de changement est renvoyé.
Retours
Un événement qui se déclenche lorsque l'attribut donné change.
GetAttributes
Cette méthode renvoie un dictionnaire de paires clé-valeur pour chaque attribut où la clé est le nom de l'attribut et la valeur est une valeur non nil .
Par exemple, le fragment de code suivant affiche les attributs et les valeurs d'une instance :
local Workspace = game:GetService("Workspace")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 d'attribut donné.
Retours
Un dictionnaire de paires de chaîne → variantes pour chaque attribut où la chaîne est le nom de l'attribut et la variante est une valeur non nulle.
GetChildren
Renvoie un tableau (une table numérotée) contenant tous les enfants directs de l'instance, ou chaque Instance dont le Parent est égal à l'objet.L'array peut être itérée en utilisant un boucle for numérique ou générique :
local Workspace = game:GetService("Workspace")-- Exemple de boucle for numériquelocal children = Workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
local Workspace = game:GetService("Workspace")-- Exemple générique de boucle whilelocal 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 à l'objet.
Voir aussi 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 codée de l'ID de débogage utilisé internement par Roblox. Notez que :
- Cet élément est protégé. Tenter de l'utiliser dans un Script ou 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 la traite.Tous les objets dans Roblox agissent comme des processus et chaque instruction d'exécution (ou «code») qui peut être débogée si nécessaire.
- Cela peut être utile pour les plugins qui doivent distinguer des objets similaires les uns des autres (tels que les objets qui partagent le même nom).
Paramètres
La longueur de la portée.
Retours
La chaîne d'ID de débogage.
É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 une liste qui contient tous les descendants de cet objet.Contrairement à Instance:GetChildren(), qui ne renvoie que les enfants immédiats d'un objet, cette méthode trouve chaque enfant de l'objet, chaque enfant 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
Renvoie une chaîne décrivant l'ascendance de l'instance.La chaîne est une concaténation du Name de l'objet et de ses ancêtres, séparée par des périodes.Le DataModel ( game ) n'est pas pris en compte.Par exemple, un Part dans le Workspace peut retourner Workspace.Part.
Lorsqu'on appelle 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 ancien sans Parent .
Cette fonction est utile pour l'enregistrement et le débogage.Vous ne devriez pas essayer d'analyser la chaîne renvoyée pour toute opération utile ; cette fonction n'échappe pas les périodes (ou tout autre symbole) dans les noms d'objets.En d'autres termes, bien que son résultat semble souvent être un identifiant Luau 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
GetStyled
Cette méthode renvoie la valeur stylée ou explicitement modifiée de la propriété spécifiée, ou la valeur par défaut de la propriété si elle n'a pas été stylée/modifiée.Cela diffère légèrement de l'accès à la valeur de propriété directement, comme [GuiObject].Rotation , qui renvoie la valeur par défaut ou modifiée de la propriété.
local Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuilocal HUDContainer = playerGui:WaitForChild("HUDContainer")local coreSheet = ReplicatedStorage:FindFirstChild("CoreSheet")local rule = coreSheet:FindFirstChildWhichIsA("StyleRule")rule.Selector = "TextButton"-- Référence à un boutonlocal button = HUDContainer:FindFirstChildWhichIsA("TextButton")print(button:GetStyled("Rotation")) --> 0 (valeur par défaut)print(button.Rotation) --> 0 (valeur par défaut)-- Appliquer la rotation via la propriété règle de stylerule:SetProperty("Rotation", 30)print(button:GetStyled("Rotation")) --> 30 (valeur stylée basée sur la règle)print(button.Rotation) --> 0 (valeur par défaut)-- Modifier/annuler explicitement la propriété stylebutton.Rotation = 45print(button:GetStyled("Rotation")) --> 45 ( valeur modifiée )print(button.Rotation) --> 45 (modified value)
Paramètres
Nom de la propriété à interroger.
Retours
La valeur style ou explicitement modifiée de la propriété spécifiée, ou la valeur de propriété par défaut si elle n'a pas été style/modifiée.
GetStyledPropertyChangedSignal
Cette méthode renvoie un événement qui se comporte exactement comme l'événement StyledPropertiesChanged, sauf qu'il ne se déclenche que lorsque la propriété de style donnée change.Il est généralement une bonne idée d'utiliser cette méthode au lieu d'une connexion à StyledPropertiesChanged avec une fonction qui vérifie le nom de propriété.Les appels ultérieurs à cette méthode sur le même objet avec le même nom de propriété retournent le même événement.
Notez que cet événement ne passera aucun argument à une fonction connectée, la valeur de la propriété modifiée devant être lue directement dans un script.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local meterBar = HUDContainer.MeterBar
local function stylePropertyChanged()
print("Style property changed!")
end
meterBar:GetStyledPropertyChangedSignal("AnchorPoint"):Connect(stylePropertyChanged)
Paramètres
Nom de la propriété de style pour laquelle écouter les modifications.
Retours
Événement qui se déclenche lorsque la propriété de style donnée change.
GetTags
Cette méthode renvoie une liste des balises appliquées à l'instance donnée, en tant que chaînes.Vous pouvez ajouter des balises dans Studio dans la fenêtre propriétés ou en temps d'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 dans Studio dans la fenêtre propriétés ou en temps d'exécution avec AddTag() .
Paramètres
Retours
IsAncestorOf
Renvoie vrai si un Instance est un ancêtre du descendant donné.
Un Instance est considéré comme l'ancêtre d'un objet si la valeur Instance.Parent ou une des valeurs de ses parents Instance.Parent est définie sur Instance .
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
Renvoie true si un Instance est un descendant de l'ancêtre donné.
Notez que IsDescendantOf() ne peut pas être utilisé avec un paramètre de nil 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))
--> faux
part.Parent = workspace
print(part:IsDescendantOf(game))
--> vrai
part.Parent = game
print(part:IsDescendantOf(game))
--> true
IsPropertyModified
Renvoie true si la valeur stockée dans la propriété spécifiée est égale au code instantané par défaut.Par exemple, si l'exportation de la propriété TextSize de un TextLabel indique 8 , alors l'appel de IsPropertyModified("TextSize") sur l'étiquette retournera false car 8 est la valeur par défaut pour TextLabel.TextSize lorsque l'étiquette est créée via Instance.new("TextLabel") plutôt que d'être insérée via les flux de travail d'insertion de Studio.
Notez que si cette méthode renvoie , le style n'affectera pas la propriété car la modification explicite d'une propriété aura priorité sur le style.
Paramètres
Nom de la propriété à interroger.
Retours
Booléen indiquant si la propriété est modifiée.
RemoveTag
Cette méthode supprime une balise d'une instance.Il ne lancera pas d'erreur si l'objet n'a pas la balise.L'élimination 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 au tag sa fonctionnalité, par exemple des connexions d'événements ou des tables.Pour empêcher les fuites de mémoire, il est une bonne idée de les nettoyer (débrancher, réinitialiser à nil , etc.) lorsqu'elles ne sont plus nécessaires pour une balise.
Paramètres
Retours
ResetPropertyToDefault
Réinitialise une propriété à sa valeur par défaut.Par exemple, appeler ResetPropertyToDefault("Rotation") sur un TextLabel est équivalent à définir son Rotation à 0 (la valeur par défaut de la propriété).Cette méthode peut être utilisée pour garantir que le style annulera la valeur par défaut de cette propriété.
Paramètres
Nom de la propriété à réinitialiser.
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 fragment de code suivant définit l'attribut InitialPosition de l'instance à Vector3.new(0, 10, 0) :
local Workspace = game:GetService("Workspace")local part = Workspace.Partpart:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Limites
Exigences et restrictions de nomination :
- Les noms ne doivent utiliser que des caractères alphanumériques et un tiret.
- Aucun espace ou symbole unique n'est autorisé.
- Les chaînes doivent comporter 100 caractères ou moins.
- Les noms ne sont pas autorisés à commencer par RBX à moins que le déclencheur ne soit un script de noyau Roblox (réservé à Roblox).
Lors de l'essai de définir une propriété à un type non pris en charge, une erreur sera lancée.
Voir aussi
- Instance:GetAttribute() qui renvoie la valeur qui a été attribuée au nom d'attribut donné.
- Instance:GetAttributes() qui renvoie un dictionnaire de paires clé-valeur pour chacun des attributs de l'instance.
Paramètres
Le nom de l'attribut qui est défini.
La valeur pour définir l'attribut spécifié.
Retours
WaitForChild
Retourne l'enfant du Instance avec le nom donné.Si l'enfant n'existe pas, il produira le thread actuel jusqu'à ce qu'il le fasse.Si le paramètre timeOut est spécifié, cette méthode expirera après le nombre spécifié de secondes et renverra nil .
Utilisation principale
WaitForChild() est extrêmement important lorsque vous travaillez sur du code exécuté par le client dans un LocalScript .Le moteur Roblox ne garantit pas le temps ou l'ordre dans lequel les objets sont répliqués du serveur au client.De plus, si une expérience a Workspace.StreamingEnabled définie sur vrai, BaseParts qui sont loin du personnage du joueur peuvent ne pas être diffusées au client, ce qui peut potentiellement provoquer des échecs de scripts lors de l'indexation des objets qui n'existent pas encore sur le client.
Notations
- Cette fonction ne renvoie pas si un enfant avec le nom donné existe lorsque l'appel est fait.
- 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 retour et qu'aucun paramètre timeOut n'a été spécifié, un avertissement sera imprimé dans la sortie que le thread peut produire indéfiniment.
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
S'enflamme lorsque la propriété Instance.Parent de l'objet ou l'une de ses ancêtres est modifiée.
Cet événement inclut deux paramètres : child se réfère au Instance dont le Instance.Parent a été effectivement modifié, alors que parent se réfère au nouveau Instance.Parent de cette 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
Le 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 chaque fois que n'importe quel attribut est modifié sur l'instance, y compris lorsqu'un attribut est défini sur nil.Le nom de l'attribut modifié est transmis à la fonction connectée.
Par exemple, le fragment de code suivant connecte la fonction attributeChanged() à tirer chaque fois que l'un des attributs de la partie change :
local Workspace = game:GetService("Workspace")
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'un attribut spécifique change.
Paramètres
Le nom de l'attribut qui a été modifié.
ChildAdded
Feux après qu'un objet soit parenté à ceci Instance .
Remarque, 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 des descendants de cet objet.C'est parce que l'objet et ses descendants ne sont pas garantis de se répliquer simultanément du serveur au client.Par exemple :
local Workspace = game:GetService("Workspace")
Workspace.ChildAdded:Connect(function(child)
-- Use WaitForChild() since descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)
Notez que cette fonction ne fonctionne que pour les enfants immédiats du 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
Feux après qu'un enfant a été retiré de ce Instance .
Supprimé fait référence au moment où le parent d'un objet est modifié de cette Instance à quelque chose d'autre que ceci Instance .Notez que cet événement se déclenchera également lorsqu'un enfant est détruit (en utilisant Instance:Destroy() ) car la fonction destroy définira le parent d'un objet à nil .
Cette fonction ne fonctionne que pour les enfants immédiats du 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
Cet événement se déclenche après l'ajout d'un descendant à la Instance.
Comme il tire pour chaque descendant, parenter un objet à la Instance fera tirer l'événement pour cet objet et tous ses descendants individuellement.
Si vous ne vous souciez que des enfants directs de la , utilisez à la place.
Voir aussi 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 le parent Instance de telle sorte qu'une instance descendante ne sera plus une descendante.Destroy() change le Parent d'une instance en nil, donc l'appel de cette méthode sur un descendant du parent provoquera le déclenchement de cet événement.
Puisque cet événement se déclenche avant la suppression du descendant, le parent du descendant sera inchangé au moment du déclenchement de cet événement .Si le descendant est également un enfant direct du parent, cet événement se déclenchera avant .
Si un descendant a des enfants, cet événement se déclenche d'abord avec le descendant, suivi de ses descendants.
Avertissement
Cet événement se déclenche avec l'objet descendant qui est supprimé.Tenter de définir le Parent du descendant sur autre chose échouera.Ci-dessous est un exemple qui montre cela :
local Workspace = game:GetService("Workspace")
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
La Instance ne sera jamais supprimée de la mémoire tant qu'une fonction connectée l'utilise encore.Cependant, si la fonction produit à 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 Instance ou l'un de ses ancêtres ne soit détruit avec Instance:Destroy() .
Si la propriété Workspace.SignalBehavior est définie sur Enum.SignalBehavior.Deferred, cet événement se déclenche au prochain point de reprise, qui sera après que le Instance ou l'un de ses ancêtres a été détruit avec Instance:Destroy() .
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 puisse être appelé (ce qui signifie qu'il ne sera pas exécuté).
Lors de la suppression d'un Instance dans Studio, comme la suppression manuelle via le Explorateur ou via un plugin, le Instance n'est pas détruit.Au lieu de cela, le parent est défini sur nil que vous pouvez suivre avec Instance.AncestryChanged .
É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())
StyledPropertiesChanged
Cet événement se déclenche chaque fois que toute propriété de style est modifiée sur l'instance, y compris lorsque une propriété est définie sur nil .
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local meterBar = HUDContainer.MeterBar
local function stylePropertyChanged()
print("Styled properties changed")
end
meterBar:StyledPropertiesChanged():Connect(stylePropertyChanged)