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

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

  • Lecture parallèle

    Détermine si un Instance et ses descendants peuvent être clonés à l'aide de Instance:Clone() , et peuvent être sauvegardés/publiés.

  • Capabilities:SecurityCapabilities
    Sécurité des scripts Roblox
    Lecture parallèle

    Ensemble de capacités autorisées à être utilisées pour les scripts à l'intérieur de ce conteneur.

  • Lecture parallèle

    Un identifiant non unique de la Instance .

  • Non répliqué
    Lecture parallèle

    Détermine le parent hiérarchique de la 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é
    Sécurité des scripts Roblox
    Lecture parallèle

    Transforme l'instance en conteneur sandboxé.

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

Méthodes

Évènements

Propriétés

Archivable

Lecture parallèle

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

Capabilities

SecurityCapabilities
Sécurité des scripts Roblox
Lecture parallèle

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

Lecture parallèle

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

Non répliqué
Lecture parallèle

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 workspace
local part = Instance.new("Part")
part.Parent = workspace
-- Instance new can also take Parent as a second parameter
Instance.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 ici
part.Anchored = true
part.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

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

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

Non répliqué
Sécurité des scripts Roblox
Lecture parallèle

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

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

Méthodes

AddTag

void

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

tag: string

Retours

void

ClearAllChildren

void

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() do
if instance:IsA("BasePart") then
instance:Destroy()
end
end

Retours

void

Échantillons de code

Instance:ClearAllChildren

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

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

void

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

Pour détruire un objet après une certaine durée, utilisez Debris:AddItem() .


Retours

void

Échantillons de code

Instance:Destroy()

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

FindFirstAncestor

Écrire en parallèle

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

name: string

Le Instance.Name à rechercher.


Retours

La Instance trouvée.

FindFirstAncestorOfClass

Écrire en parallèle

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

className: string

Le Object.ClassName à rechercher.


Retours

La Instance trouvée.

FindFirstAncestorWhichIsA

Écrire en parallèle

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

className: string

Le Object.ClassName à rechercher.


Retours

La Instance trouvée.

FindFirstChild

Écrire en parallèle

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

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 = part
local c = part.Color --> Une couleur 3
local 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

name: string

Le Instance.Name à rechercher.

recursive: bool

Whether or not la recherche devrait être exécutée de manière récursive.

Valeur par défaut : false

Retours

La Instance trouvée.

É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 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

className: string

Le Object.ClassName à rechercher.


Retours

La Instance trouvée.

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

className: string

Le Object.ClassName à rechercher.

recursive: bool

Whether or not la recherche devrait être exécutée de manière récursive.

Valeur par défaut : false

Retours

La Instance trouvée.

FindFirstDescendant

Écrire en parallèle

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

name: string

Le Instance.Name à rechercher.


Retours

La Instance trouvée.

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 1> Class.Actor1> est renvoyé. Si aucun ancêtre n'est un 4> Class.Actor4>, le résultat est 7> nil7>.


Retours

Le Actor trouvé.

GetAttribute

Variant
Écrire en parallèle

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

Voir aussi

Paramètres

attribute: string

Nom de l'attribut récupéré.


Retours

Variant

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

attribute: string

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

Écrire en parallèle

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

Instances
Écrire en parallèle

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

-- Exemple de boucle générique
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 sur l'objet.

Voir également 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 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

scopeLength: number

La longueur du champ de vision.

Valeur par défaut : 4

Retours

La chaîne ID Debug.

É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 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

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

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

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

Paramètres

name: string

Retours

Variant

GetTags

Écrire en parallèle

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

Écrire en parallèle

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

tag: string

Retours

IsAncestorOf

Écrire en parallèle

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

descendant: Instance

Le descendant Instance .


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

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

ancestor: Instance

L'ancêtre Instance .


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))
--> false
part.Parent = workspace
print(part:IsDescendantOf(game))
--> true
part.Parent = game
print(part:IsDescendantOf(game))
--> true

RemoveTag

void

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

tag: string

Retours

void

SetAttribute

void

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

Paramètres

attribute: string

Nom de l'attribut à configurer.

value: Variant

La valeur à laquelle l'attribut spécifié doit être défini.


Retours

void

WaitForChild

Peut augmenter

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

childName: string

Le Instance.Name à rechercher.

timeOut: number

Un paramètre de temps d'expiration facultatif.


Retours

La Instance trouvée.

Échantillons de code

Instance:WaitForChild

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

child: Instance

La 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 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

attribute: string

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

child: Instance

La Instance qui a été ajoutée.


É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

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

child: Instance

La Instance qui a été supprimée.


É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

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

descendant: Instance

La Instance qui a été ajoutée.


É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 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

descendant: Instance

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


É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

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

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