Instance

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Non navigable

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

  • Lecture parallèle

    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.

  • Capabilities:SecurityCapabilities
    Lecture parallèle

    Le jeu de capacités pouvant être utilisé pour les scripts à l'intérieur de ce conteneur.

  • Lecture parallèle

    Un identifiant non unique du Instance .

  • Non répliqué
    Lecture parallèle

    Détermine le parent hiérarchique du Instance .

  • Caché
    Sécurité des plugins
    Lecture parallèle
    Déprécié

    Une propriété obsolète qui protégeait autrefois les objets CoreGui.

  • Non répliqué
    Lecture parallèle

    Transforme l'instance en conteneur sandboxé.

  • UniqueId:UniqueId
    Non répliqué
    Non scriptable
    Sécurité Roblox
    Lecture parallèle

    Un identifiant unique pour l'instance.

Méthodes

Évènements

Propriétés

Archivable

Lecture parallèle

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()) --> Part
part.Archivable = false
print(part:Clone()) --> nil

Capabilities

SecurityCapabilities
Lecture parallèle

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

Lecture parallèle

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.Baseplate
local 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

Non répliqué
Lecture parallèle

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

Caché
Sécurité des plugins
Lecture parallèle

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

Non répliqué
Lecture parallèle

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

UniqueId
Non répliqué
Non scriptable
Sécurité Roblox
Lecture parallèle

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

tag: string
Valeur par défaut : ""

Retours

()

ClearAllChildren

()

Cette fonction détruit tous les enfants et les descendants d'une instance.


local part = Instance.new("Part")
-- Add some sparkles
for i = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
local sc = Instance.new("Sparkles")
sc.Parent = sparkles
end
print("Children:", #part:GetChildren()) --> Children: 3
part: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() do
if descendant:IsA("BasePart") then
descendant:Destroy()
end
end

Retours

()

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

Cloning an Instance

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 = nil
task.wait(2)
object.Parent = Workspace

Pour détruire un objet après un certain nombre de temps, utilisez Debris:AddItem() .


Retours

()

Échantillons de code

Instance:Destroy()

local part = script.Parent.Part
part:Destroy()

FindFirstAncestor

Écrire en parallèle

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

name: string

Le Instance.Name à rechercher.

Valeur par défaut : ""

Retours

Le Instance trouvé.

FindFirstAncestorOfClass

Écrire en parallèle

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

className: string

Le Object.ClassName à rechercher.

Valeur par défaut : ""

Retours

Le Instance trouvé.

FindFirstAncestorWhichIsA

Écrire en parallèle

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")) --> true
print(part:IsA("BasePart")) --> true
print(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

className: string

Le Object.ClassName à rechercher.

Valeur par défaut : ""

Retours

Le Instance trouvé.

FindFirstChild

Écrire en parallèle

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 travail
Workspace.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 then
part.Transparency = 0.5
end
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 = part
local 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

name: string

Le Instance.Name à rechercher.

Valeur par défaut : ""
recursive: boolean

Si la recherche doit être menée de manière récursive ou non.

Valeur par défaut : false

Retours

Le Instance trouvé.

Échantillons de code

Instance : FindFirstChild

local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end

FindFirstChildOfClass

Écrire en parallèle

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

className: string

Le Object.ClassName à rechercher.

Valeur par défaut : ""

Retours

Le Instance trouvé.

Échantillons de code

Instance:FindFirstChildOfClass

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

Écrire en parallèle

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")) --> vrai
print(part:IsA("BasePart")) --> vrai
print(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

className: string

Le Object.ClassName à rechercher.

Valeur par défaut : ""
recursive: boolean

Si la recherche doit être menée de manière récursive ou non.

Valeur par défaut : false

Retours

Le Instance trouvé.

FindFirstDescendant

Écrire en parallèle

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

name: string

Le Instance.Name à rechercher.

Valeur par défaut : ""

Retours

Le Instance trouvé.

GetActor

Écrire en parallèle

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

Le Actor trouvé.

GetAttribute

Variant
Écrire en parallèle

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.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)
Voir aussi

Paramètres

attribute: string

Le nom de l'attribut récupéré.

Valeur par défaut : ""

Retours

Variant

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

attribute: string

Le nom de l'attribut spécifié pour lequel le signal de changement est renvoyé.

Valeur par défaut : ""

Retours

Un événement qui se déclenche lorsque l'attribut donné change.

GetAttributes

Écrire en parallèle

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.Part
part:SetAttribute("InitialPosition", part.Position)
part:SetAttribute("CanUse", true)
for name, value in part:GetAttributes() do
print(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

Instances
Écrire en parallèle

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érique
local children = Workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

local Workspace = game:GetService("Workspace")
-- Exemple générique de boucle while
local children = Workspace:GetChildren()
for i, child in children do
print(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

Instances

Un tableau contenant les enfants de l'instance.

Échantillons de code

Instance:GetChildren

local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end

GetDebugId

Non navigable
Sécurité des plugins

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

scopeLength: number

La longueur de la portée.

Valeur par défaut : 4

Retours

La chaîne d'ID de débogage.

Échantillons de code

Instance:GetDebugId

print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12

GetDescendants

Écrire en parallèle

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

Instance:GetDescendants

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

Écrire en parallèle

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

Le nom complet du Instance .

Échantillons de code

Instance:GetFullName

-- 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
Instance:GetFullName Lua Implementation

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

Variant

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.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local coreSheet = ReplicatedStorage:FindFirstChild("CoreSheet")
local rule = coreSheet:FindFirstChildWhichIsA("StyleRule")
rule.Selector = "TextButton"
-- Référence à un bouton
local 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 style
rule: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é style
button.Rotation = 45
print(button:GetStyled("Rotation")) --> 45 ( valeur modifiée )
print(button.Rotation) --> 45 (modified value)

Paramètres

name: string

Nom de la propriété à interroger.

Valeur par défaut : ""

Retours

Variant

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

property: string

Nom de la propriété de style pour laquelle écouter les modifications.

Valeur par défaut : ""

Retours

Événement qui se déclenche lorsque la propriété de style donnée change.

GetTags

Écrire en parallèle

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

Écrire en parallèle

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

tag: string
Valeur par défaut : ""

Retours

IsAncestorOf

Écrire en parallèle

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

descendant: Instance

Le descendant Instance.

Valeur par défaut : ""

Retours

Vrai si le Instance est un ancêtre du descendant donné.

Échantillons de code

Instance:IsAncestorOf()

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

Écrire en parallèle

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

ancestor: Instance

L'ancêtre Instance.

Valeur par défaut : ""

Retours

Vrai si le Instance est un descendant de l'ancêtre donné.

Échantillons de code

Instance : IsDescendantOf

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

property: string

Nom de la propriété à interroger.

Valeur par défaut : ""

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

tag: string
Valeur par défaut : ""

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

property: string

Nom de la propriété à réinitialiser.

Valeur par défaut : ""

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.Part
part: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

Paramètres

attribute: string

Le nom de l'attribut qui est défini.

Valeur par défaut : ""
value: Variant

La valeur pour définir l'attribut spécifié.

Valeur par défaut : ""

Retours

()

WaitForChild

Peut augmenter

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

childName: string

Le Instance.Name à rechercher.

Valeur par défaut : ""
timeOut: number

Un paramètre de temps d'expiration facultatif.

Valeur par défaut : ""

Retours

Le Instance trouvé.

Échantillons de code

Instance:WaitForChild

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

child: Instance

Le Instance dont le Instance.Parent a été modifié.

parent: Instance

Le nouveau Instance.Parent de la Instance dont le Instance.Parent a été modifié.


Échantillons de code

Instance.AncestryChanged

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

attribute: string

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

child: Instance

Le Instance qui a été ajouté.


Échantillons de code

Instance.ChildAdded

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

child: Instance

Le Instance qui a été supprimé.


Échantillons de code

Instance.ChildRemoved

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

descendant: Instance

Le Instance qui a été ajouté.


Échantillons de code

Instance.DescendantAdded

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

descendant: Instance

Le Instance qui est en train d'être supprimé.


Échantillons de code

Instance.DescendantRemoving

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

Using the Destroying Event (Immediate signals)

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()
Using the Destroying Event (Deferred signals)

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)