Object
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
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
Uma string de leitura só que representa a classe a que este Object pertence.
Métodos
Obtenha um evento que dispara quando uma propriedade dada do objeto muda.
Retorna verdadeiro se a classe de um Objetocorresponder ou herdar de uma classe dada.
Eventos
Dispedido imediatamente após uma propriedade do objeto mudar, com algumas limitações.
Propriedades
ClassName
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() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
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
A propriedade para se conectar.
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.
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 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
A classe contra a qual a classe do Objeto será verificada. Sensível ao caso.
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.
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
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.
-- 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