Object
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
El objeto es la clase base para todas las clases en la jerarquía de clases de Roblox.Cada otra clase que el motor de Roblox define hereda todos los miembros de Object.No es posible crear directamente un objeto.
Resumen
Propiedades
Una cadena de solo lectura que representa la clase a la que pertenece este Object .
Métodos
Obtenga un evento que se active cuando una propiedad dada del objeto cambie.
Devuelve verdadero si la clase de un objeto coincide o hereda de una clase dada.
Eventos
Despedido inmediatamente después de que cambie una propiedad del objeto, con algunas limitaciones.
Propiedades
ClassName
Una cadena de solo lectura que representa la clase a la que pertenece este Object .
Esta propiedad se puede utilizar con varias otras funciones que se utilizan para identificar objetos por introducir, como Object:IsA() o Instance:FindFirstChildOfClass() .
Tenga en cuenta que esta propiedad es solo de lectura y no se puede modificar por scripts.Los desarrolladores que deseen cambiar la clase de un objeto tendrán que crear un nuevo Object .
A diferencia de Object:IsA(), ClassName se puede usar para verificar si un objeto pertenece a una clase específica sin ignorar la herencia de clases. Por ejemplo:
for _, child in workspace:GetChildren() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
Métodos
GetPropertyChangedSignal
Este método devuelve un evento que se comporta exactamente como el evento Changed, excepto que solo se activa cuando cambia la propiedad dada.En general, es una buena idea usar este método en lugar de una conexión a Changed con una función que verifica el nombre de la propiedad.Llamadas posteriores a este método en el mismo objeto con el mismo nombre de propiedad devuelven el mismo evento.
ValueBase objetos, como IntValue y StringValue, usan un evento modificado Changed que dispara con el contenido de su propiedad Value.Como tal, este método proporciona una manera de detectar cambios en otras propiedades de esos objetos.
Tenga en cuenta que este evento no pasará ningún argumento a una función conectada, por lo que el valor de la propiedad cambiada debe leerse directamente dentro de un script.
Limitaciones
El evento devuelto por este método no dispara por cambios relacionados con la física, como cuando el CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position o Orientation propiedades de un cambio de BasePart debido a la gravedad.Para detectar cambios en estas propiedades, considera usar un evento basado en físicas como RunService.PreSimulation .
Además, el evento devuelto puede no disparar en cada modificación de propiedades que cambian con mucha frecuencia, y/o puede no disparar para tales propiedades en todos/todas.Se recomienda que pruebes cuidadosamente los cambios de propiedad que afecten la lógica del juego.
Parámetros
La propiedad a la que conectarse.
Devuelve
Una señal que se activa cada vez que cambia la propiedad.
Muestras de código
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.
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.
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")
IsA
IsA devuelve verdadero si la clase del objeto es equivalente a o una subclase de una clase dada.Esta función es similar a los operadores ⇒ en otros idiomas y es una forma de introspección de tipo.Para ignorar la herencia de clase, prueba la propiedad ClassName directamente en lugar.Para verificar los tipos de datos nativos de Luau (número, cadena, etc) use las funciones type y typeof .
Con más frecuencia, esta función se usa para probar si un objeto es una especie de parte, como Part o WedgePart , que hereda de BasePart (una clase abstracta).Por ejemplo, si tu objetivo es cambiar todas las extremidades de un personaje a un mismo color, puedes usar GetChildren para iterar sobre los hijos, luego usa IsA para filtrar objetos no BasePart que carezcan de la propiedad BrickColor:
local Players = game:GetService("Players")
local function paintFigure(character, color)
-- Iterar sobre los objetos hijos del personaje
for _, child in character:GetChildren() do
-- Filtrar objetos no pertenecientes, como Camisa, Pantalones y Humanoide
-- R15 utiliza MeshPart y R6 utiliza Part, por lo que utilizamos BasePart aquí para detectar ambos:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))
Dado que todas las clases heredan de Object, llamar a object:IsA("Object") siempre devolverá verdadero.
Parámetros
La clase contra la cual se comprobará la clase del objeto. Sensible a mayúsculas y minúsculas.
Devuelve
Describe si la clase del objeto coincidió o es una subclase de la clase dada.
Muestras de código
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.
local Workspace = game:GetService("Workspace")
print(Workspace:IsA("Workspace")) -- true
print(Workspace:IsA("BasePart")) -- false
print(Workspace:IsA("Instance")) -- true
Eventos
Changed
Este evento se activa inmediatamente después de que se cambie una propiedad de un objeto y funciona con la mayoría de los casos de uso (ver limitaciones a continuación).El nuevo valor de una propiedad cambiada es no pasado como parámetro, por lo que debe accederse usando object[property] .Por ejemplo:
object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)
Si solo estás interesado en escuchar el cambio de una propiedad específica, considera usar el método GetPropertyChangedSignal() en su lugar.
Para objetos ValueBase como IntValue y StringValue, este evento solo se activa cuando cambia la propiedad Value del objeto.Para detectar otros cambios en ValueBase objetos, use GetPropertyChangedSignal() en su lugar.
Limitaciones
Este evento no dispara fuego por cambios relacionados con la física, como cuando el CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position o Orientation propiedades de un cambio de BasePart debido a la gravedad.Para detectar cambios en estas propiedades, considera usar un evento basado en físicas como RunService.PreSimulation .
Además, este evento puede no disparar en cada modificación de propiedades que cambian con mucha frecuencia, y/o puede no disparar para tales propiedades en todos/todas.Se recomienda que pruebes cuidadosamente los cambios de propiedad que afecten la lógica del juego.
Parámetros
El nombre de la propiedad que cambió.
Muestras de código
This sample demonstrates the subtleties of the Changed event on normal objects and "-Value" objects.
-- Demonstrate the Changed event by creating a Part
local part = Instance.new("Part")
part.Changed:Connect(print)
-- This fires Changed with "Transparency"
part.Transparency = 0.5
-- Similarly, this fires Changed with "Number"
part.Name = "SomePart"
-- Since changing BrickColor will also change other
-- properties at the same time, this line fires Changed
-- with "BrickColor", "Color3" and "Color3uint16".
part.BrickColor = BrickColor.Red()
-- A NumberValue holds a double-precision floating-point number
local vNumber = Instance.new("NumberValue")
vNumber.Changed:Connect(print)
-- This fires Changed with 123.456 (not "Value")
vNumber.Value = 123.456
-- This does not fire Changed
vNumber.Name = "SomeNumber"
-- A StringValue stores one string
local vString = Instance.new("StringValue")
vString.Changed:Connect(print)
-- This fires Changed with "Hello" (not "Value")
vString.Value = "Hello"
This code sample demonstrates the Changed event firing within a parent object.
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