Object

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Não replicado

O objeto é a classe base para todas as classes na hierarquia de classe Roblox.Toda outra classe que o Roblox Engine define herda todos os membros do objeto.Não é possível criar diretamente um Objeto.

Resumo

Propriedades

  • Somente leitura
    Não replicado
    Ler Parallel

    Uma string de leitura só que representa a classe a que este Object pertence.

Métodos

Eventos

Propriedades

ClassName

Somente leitura
Não replicado
Ler Parallel

Uma string de leitura só que representa a classe a que este Object pertence.

Essa propriedade pode ser usada com várias outras funções que são usadas para identificar objetos por digitar, como Object:IsA() ou Instance:FindFirstChildOfClass().

Observe que esta propriedade é apenas de leitura e não pode ser alterada por scripts.Desenvolvedores que desejam alterar a classe de um Objetoterão que criar um novo Object .

Ao contrário de Object:IsA(), ClassName pode ser usado para verificar se um objeto pertence a uma classe específica, ignorando a herança de classe. Por exemplo:


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 retorna um evento que se comporta exatamente como o evento Changed, exceto que só dispara quando a propriedade dada muda.É geralmente uma boa ideia usar esse método em vez de uma conexão com Changed com uma função que verifica o nome da propriedade.Chamadas subsequentes a este método no mesmo objeto com o mesmo nome de propriedade retornam o mesmo evento.

ValueBase objetos, como IntValue e StringValue, use um evento modificado Changed que dispara com o conteúdo de sua propriedade Value.Como tal, este método fornece uma maneira de detectar alterações em outras propriedades desses objetos.

Observe que este evento não passará nenhum argumento para uma função conectada, portanto, o valor da propriedade modificada deve ser lido diretamente dentro de um script.

Limitações

O evento retornado por este método não não dispara por mudanças relacionadas à física, como quando o CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position ou Orientation propriedades de uma mudança de BasePart devido à gravidade.Para detectar mudanças nessas propriedades, considere usar um evento baseado em física como RunService.PreSimulation.

Além disso, o evento retornado pode não disparar em cada modificação de propriedades que mudam com muita frequência, e/ou pode não disparar para tais propriedades de todas / todos.Recomenda-se que você teste cuidadosamente as alterações de propriedade que afetam a lógica do jogo.

Parâmetros

property: string

A propriedade para se conectar.

Valor Padrão: ""

Devolução

Um sinal que dispara sempre que a propriedade muda.

Amostras 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")
Escrever Parallel

IsA retorna verdadeiro se a classe do Objetofor equivalente a ou uma subclasse de uma classe dada.Essa função é semelhante aos operadores em outros idiomas e é uma forma de introspecção de tipo.Para ignorar a herança de classe, teste a propriedade ClassName diretamente em vez disso.Para verificar tipos de dados nativos Luau (número, string / cadeia / texto, etc) use as funções type e typeof.

Mais comumente, essa função é usada para testar se um objeto é algum tipo de parte, como Part ou WedgePart, que herda de BasePart (uma classe abstrata).Por exemplo, se o seu objetivo é mudar todas as extremidades de um personagem para a mesma cor, você pode usar GetChildren para iterar sobre as crianças, então use IsA para filtrar objetos não BasePart que não possuem a propriedade BrickColor:


local Players = game:GetService("Players")
local function paintFigure(character, color)
-- Iterar sobre os objetos filhos do personagem
for _, child in character:GetChildren() do
-- Filtre objetos não pertencentes, como Camisa, Calças e Humanoide
-- O R15 usa MeshPart e o R6 usa Part, então usamos BasePart aqui para detectar ambos:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))

Como todas as classes herdam de Object, chamar object:IsA("Object") sempre retornará verdadeiro.

Parâmetros

className: string

A classe contra a qual a classe do Objeto será verificada. Sensível ao caso.

Valor Padrão: ""

Devolução

Descreve se a classe do objeto correspondia ou era uma subclasse da classe dada.

Amostras 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 dispara imediatamente após uma propriedade de objeto for alterada e funciona com a maioria dos casos de uso (veja limitações abaixo).O novo valor de uma propriedade modificada é não transmitido como um parâmetro, então deve ser acessado usando object[property].Por exemplo:


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

Se você estiver interessado apenas em ouvir a mudança de uma propriedade específica, considere usar o método GetPropertyChangedSignal() em vez disso.

Para objetos como e , este evento só é disparado quando as propriedades do Objetomudam de .Para detectar outras alterações em ValueBase objetos, use GetPropertyChangedSignal() em vez disso.

Limitações

Este evento não dispara por mudanças relacionadas à física, como quando o CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position ou Orientation propriedades de uma mudança de BasePart devido à gravidade.Para detectar mudanças nessas propriedades, considere usar um evento baseado em física como RunService.PreSimulation.

Além disso, esse evento pode não disparar em cada modificação de propriedades que mudam com muita frequência, e/ou pode não disparar para tais propriedades de todas / todos.Recomenda-se que você teste cuidadosamente as alterações de propriedade que afetam a lógica do jogo.

Parâmetros

property: string

O nome da propriedade que mudou.


Amostras 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