Object

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 répliqué

L'objet est la classe de base pour toutes les classes dans la hiérarchie de classe Roblox.Chaque autre classe que le moteur Roblox définit hérite de tous les membres de l'objet.Il n'est pas possible de créer directement l'objet.

Résumé

Propriétés

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Une chaîne de lecture seule représentant la classe à laquelle cette Object appartient.

Méthodes

Évènements

  • Tiré immédiatement après que la propriété de l'objet ait changé, avec certaines limitations.

Propriétés

ClassName

Lecture uniquement
Non répliqué
Lecture parallèle

Une chaîne de lecture seule représentant la classe à laquelle cette Object appartient.

Cette propriété peut être utilisée avec diverses autres fonctions qui sont utilisées pour identifier les objets par taper, telles que Object:IsA() ou Instance:FindFirstChildOfClass() .

Notez que cette propriété est lue seule et ne peut pas être modifiée par les scripts.Les développeurs souhaitant modifier la classe d'un objet devront créer une nouvelle Object .

Contrairement à Object:IsA(), ClassName peut être utilisé pour vérifier si un objet appartient à une classe spécifique en ignorant l'héritage de classe. Par exemple :


for _, child in workspace:GetChildren() do
if child.ClassName == "Part" then
print("Found a Part")
-- will find Parts in model, but NOT TrussParts, WedgeParts, etc
end
end

Méthodes

GetPropertyChangedSignal

Cette méthode renvoie un événement qui se comporte exactement comme l'événement Changed, sauf qu'il ne se déclenche que lorsque la propriété donnée change.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 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.

ValueBase objets, tels que IntValue et StringValue, utilisent un événement modifié Changed qui se déclenche avec le contenu de leur propriété Value.En tant que tel, cette méthode fournit un moyen de détecter les modifications dans d'autres propriétés de ces objets.

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.

Limites

L'événement renvoyé par cette méthode ne fait pas pas de feu pour les modifications liées à la physique, telles que lorsque le CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position ou Orientation propriétés d'un changement de BasePart dû à la gravité.Pour détecter les modifications de ces propriétés, envisagez d'utiliser un événement basé sur la physique comme RunService.PreSimulation .

En outre, l'événement retourné peut ne pas tirer à chaque modification des propriétés qui changent très souvent, et/ou il peut ne pas tirer pour de telles propriétés du tout.Il est recommandé de tester soigneusement les modifications de propriété qui affectent la logique du jeu.

Paramètres

property: string

La propriété à connecter.

Valeur par défaut : ""

Retours

Un signal qui se déclenche chaque fois que la propriété change.

Échantillons de code

This code sample demonstrates how to save a value before a changed event fires on it in order to get more information about a change.

Old-to-New Values with Changed

local part = Instance.new("Part")
local currentColor = part.BrickColor
local function onBrickColorChanged()
local newColor = part.BrickColor
print("Color changed from", currentColor.Name, "to", newColor.Name)
currentColor = newColor
end
part:GetPropertyChangedSignal("BrickColor"):Connect(onBrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Really blue")

This code sample demonstrates the equivalence of the Changed event and event returned by GetPropertyChangedSignal.

Changed and GetPropertyChangedSignal

local part = Instance.new("Part")
local function onBrickColorChanged()
print("My color is now " .. part.BrickColor.Name)
end
local function onChanged(property)
if property == "BrickColor" then
onBrickColorChanged()
end
end
part:GetPropertyChangedSignal("BrickColor"):Connect(onBrickColorChanged)
part.Changed:Connect(onChanged)
-- Trigger some changes (because we connected twice,
-- both of these will cause two calls to onBrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Institutional white")
Écrire en parallèle

IsA renvoie true si la classe de l'objet est équivalente à ou une sous-classe d'une classe donnée.Cette fonction est similaire aux opérateurs instanceof dans d'autres langues et est une forme d'introspection de type >.Pour ignorer l'héritage de classe, testez plutôt directement la propriété ClassName .Pour vérifier les types de données Luau natifs (number, chaîne, etc) utilisez les fonctions type et typeof.

Le plus souvent, cette fonction est utilisée pour tester si un objet est une sorte de partie, comme Part ou WedgePart, qui hérite de BasePart (une classe abstraite).Par exemple, si votre objectif est de changer tous les membres d'un personnage d'une même couleur, vous pouvez utiliser GetChildren pour itérer sur les enfants, puis utiliser IsA pour filtrer les objets non BasePart qui manquent de la propriété BrickColor:


local Players = game:GetService("Players")
local function paintFigure(character, color)
-- Itérer sur les objets enfants du personnage
for _, child in character:GetChildren() do
-- Filtrer les objets non partiels, tels que la chemise, le pantalon et l'humanoïde
-- R15 utilise MeshPart et R6 utilise Part, donc nous utilisons BasePart ici pour détecter les deux :
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))

Puisque toutes les classes héritent de Object, l'appel de object:IsA("Object") retournera toujours vrai.

Paramètres

className: string

La classe contre laquelle la classe de l'objet sera vérifiée. Sensible à la case.

Valeur par défaut : ""

Retours

Détermine si la classe de l'objet correspond ou est une sous-classe de la classe donnée.

Échantillons de code

Demonstrates determining the class of Workspace using Instance:IsA()

Workspace is of class 'Workspace', so the first statement is true. Workspace is not of class 'BasePart', so the second statement is false. Workspace inherits from Instance and therefore is of class 'Instance', so the third statement is true.

Instance:IsA()

local Workspace = game:GetService("Workspace")
print(Workspace:IsA("Workspace")) -- true
print(Workspace:IsA("BasePart")) -- false
print(Workspace:IsA("Instance")) -- true

Évènements

Changed

Cet événement se déclenche immédiatement après que la propriété d'un objet ait été modifiée et il fonctionne avec la plupart des cas d'utilisation (voir les limitations ci-dessous).La nouvelle valeur d'une propriété modifiée est pas transmise en tant que paramètre, donc elle doit être accessible en utilisant object[property] .Par exemple :


object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)

Si vous êtes seulement intéressé par l'écoute du changement d'une propriété spécifique, envisagez d'utiliser la méthode GetPropertyChangedSignal() à la place.

Pour ValueBase les objets tels que IntValue et StringValue, cet événement ne se déclenche que lorsque les propriétés de l'objet changent de Value.Pour détecter d'autres modifications dans ValueBase les objets, utilisez GetPropertyChangedSignal() à la place.

Limites

Cet événement ne déclenche pas pas de feu pour les modifications liées à la physique, telles que lorsque le CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position ou Orientation propriétés d'un changement de BasePart dû à la gravité.Pour détecter les modifications de ces propriétés, envisagez d'utiliser un événement basé sur la physique comme RunService.PreSimulation .

En outre, cet événement peut ne pas se déclencher à chaque modification des propriétés qui changent très souvent, et/ou il peut ne pas se déclencher du tout pour de telles propriétés.Il est recommandé de tester soigneusement les modifications de propriété qui affectent la logique du jeu.

Paramètres

property: string

Le nom de la propriété qui a changé.


Échantillons de code

Cet exemple montre les subtilités de l'événement modifié sur les objets normaux et les objets "-Value".

Événement modifié

-- Démontrer l'événement modifié en créant une partie
local part = Instance.new("Part")
part.Changed:Connect(print)
-- Cela déclenche Changed avec "Transparence"
part.Transparency = 0.5
-- De même, cela déclenche Changed avec "Number"
part.Name = "SomePart"
-- Comme le changement de la couleur de brique va également changer d'autres
-- propriétés en même temps, cette ligne déclenche Changed
-- avec "BrickColor", "Color3" et "Color3uint16".
part.BrickColor = BrickColor.Red()
-- Une valeur numérique contient un nombre à double précision de point flottant
local vNumber = Instance.new("NumberValue")
vNumber.Changed:Connect(print)
-- Cela déclenche Changed avec 123.456 (pas « Valeur »)
vNumber.Value = 123.456
-- Cela ne déclenche pas Changed
vNumber.Name = "SomeNumber"
-- Une valeur de chaîne stocke une chaîne
local vString = Instance.new("StringValue")
vString.Changed:Connect(print)
-- Cela déclenche Changed avec "Hello" (pas "Value")
vString.Value = "Hello"

This code sample demonstrates the Changed event firing within a parent object.

Change Detector

local object = script.Parent
local function onChanged(property)
-- Get the current value of the property
local value = object[property]
-- Print a message saying what changed
print(object:GetFullName() .. "." .. property .. " (" .. typeof(value) .. ") changed to " .. tostring(value))
end
object.Changed:Connect(onChanged)
-- Trigger a simple change in the object (add an underscore to the name)
object.Name = "_" .. object.Name