Object

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
No replicado

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

  • Solo lectura
    No replicado
    Leer paralelo

    Una cadena de solo lectura que representa la clase a la que pertenece este Object .

Métodos

Eventos

  • Despedido inmediatamente después de que cambie una propiedad del objeto, con algunas limitaciones.

Propiedades

ClassName

Solo lectura
No replicado
Leer paralelo

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() do
if child.ClassName == "Part" then
print("Found a Part")
-- will find Parts in model, but NOT TrussParts, WedgeParts, etc
end
end

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

property: string

La propiedad a la que conectarse.

Valor predeterminado: ""

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.

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")
Escribir paralelo

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

className: string

La clase contra la cual se comprobará la clase del objeto. Sensible a mayúsculas y minúsculas.

Valor predeterminado: ""

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.

Instance:IsA()

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

property: string

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.

Changed Event

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

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