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 hierarcha de clases de Roblox. Cada otra clase que el motor de Roblox define hereda todos los miembros del objeto. No es posible crear directamente el objeto.
Resumen
Propiedades
Una cadena de lectura que representa la clase que pertenece a esto Object
Métodos
Obtén un evento que se activa cuando se cambia una propiedad dada del objeto.
Regresa veraz si la clase de un objeto coincide o hereda de una clase dada.
Eventos
Se activa inmediatamente después de que cambie la propiedad del objeto, con algunas limitaciones.
Propiedades
ClassName
Una cadena de lectura que representa la clase que pertenece a esto Object
Esta propiedad se puede usar con varias otras funciones que se utilizan para identificar objetos por introducir, como Object:IsA() o Instance:FindFirstChildOfClass() .
Tenga en cuenta que esta propiedad se lee solo y no se puede alterar por scripts. Los desarrolladores que deseen cambiar la clase de un objeto tendrán en cambio 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 ignorando la herencia de clase. 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返回一个事件 que comporta exactamente como el evento Changed , excepto que sólo se activa cuando se cambia la propiedad dada. Generalmente es una buena idea usar este método en lugar de una conexión a Changed con una función que comprueba el nombre de la propiedad. Las siguientes llamadas a este método en el mismo objeto con la misma propiedad nombre devuelve el
Class.ValueBase objetos, como IntValue y StringValue, usa un evento modificado 0> Class.Object.Changed|Changed0> que se activa con el contenido de su propiedad ValueBase3> . Como tal, este método proporciona una manera de detectar cambios en otras propiedades de esos objetos.
Nota 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
Además, el evento devuelto no puede dispararse en cada modificación de propiedades que cambia con mucha frecuencia, y / o no puede dispararse para tales propiedades en todos/todas. Se recomienda que pruebes cuidadosamente las propiedades que cambian que afectan la lógica del juego.
Parámetros
La propiedad a la que se conecta.
Devuelve
Una señal que se activa cuando la propiedad cambia.
Muestras de código
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")
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返回 true if the objeto's class is equivalente a o una subclase de una clase dada. Esta función es similar a los operadores instanceof en otros idiomas, y es una forma de tipo introspección . Para ignorar la
La mayoría de las veces, esta función se usa para probar si un objeto es de algún tipo de parte, como Part o WedgePart, que hereda de
local function paintFigure(character, color)
-- Iterar sobre los objetos hijos del personaje
for _, child in character:GetChildren() do
-- Filtra objetos no parte, como camisas, pantalones y humanoides
-- R15 usa MeshPart y R6 usa Part, por lo que usamos BasePart aquí para detectar ambos:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(game.Players.Player.Character, BrickColor.new("Bright blue"))
Dado que todas las clases heredan de Object, llamar object:IsA("Object") siempre devolverá true.
Parámetros
La clase a la que la clase del objeto se verificará. Sensible a mayúsculas y minúsculas.
Devuelve
Describe si la clase del objeto coincide o no con la clase dada.
Muestras de código
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 la 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 no se ha pasado como parámetro, por lo que debe accederse a él usando object[propiedad] . 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 ValueBase objetos como IntValue y StringValue, este evento solo se activa cuando la propiedad 1> Value1> del objeto cambia. Para detectar otras cambios en 4> Class.ValueBase4> objetos, usa 7> Class
Limitaciones
Este evento no dispara por cambios relacionados con la física, como cuando el Class.Base
Además, este evento no puede disparar en cada modificación de propiedades que cambia con mucha frecuencia, y / o no puede disparar para tales propiedades en todos/todas. Se recomienda que pruebes cuidadosamente las propiedades de cambio que afectan la lógica del juego.
Parámetros
El nombre de la propiedad que cambió.
Muestras de código
-- 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"
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