Instance

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 navegável

Instance é a classe base para todas as classes na hierarquia de classe Roblox que podem fazer parte da árvore DataModel.

Não é possível criar diretamente objetos raiz Instance , mas o construtor especial Instance.new() cria objetos por meio de código, usando o nome da classe como parâmetro e retornando o objeto criado.

Resumo

Propriedades

  • Ler Parallel

    Determina se um Instance e seus descendentes podem ser clonados usando Instance:Clone() e podem ser salvos/publicados.

  • Capabilities:SecurityCapabilities
    Ler Parallel

    O conjunto de capacidades permitidas para serem usadas para scripts dentro deste contêiner.

  • Ler Parallel

    Um identificador não exclusivo do Instance.

  • Não replicado
    Ler Parallel

    Determina o pai hierárquico do Instance .

  • Oculto
    Segurança do plugin
    Ler Parallel
    Obsoleto

    Uma propriedade obsoleta que costumava proteger CoreGui objetos.

  • Não replicado
    Ler Parallel

    Transforma a instância em um contêiner sandboxado.

  • UniqueId:UniqueId
    Não replicado
    Não scriptável
    Segurança Roblox
    Ler Parallel

    Um identificador exclusivo para a instância.

Métodos

Eventos

Propriedades

Archivable

Ler Parallel

Essa propriedade determina se a instância deve ser incluída quando a experiência for publicada ou salva ou quando Clone() for chamada em um dos ancestrais da instância.Chamar diretamente em uma instância retornará se essa instância não for não .

Copiar um objeto no Studio usando as opções Duplicar ou Copiar / Colar ignorará sua própria propriedade Archivable e definirá Archivable para true para a cópia.


local part = Instance.new("Part")
print(part:Clone()) --> Part
part.Archivable = false
print(part:Clone()) --> nil

Capabilities

SecurityCapabilities
Ler Parallel

O conjunto de capacidades permitidas para serem usadas para scripts dentro desta instância.Para que as capacidades tenham efeito, a propriedade Instance.Sandboxed deve ser habilitada.

Essa propriedade é usada por uma característica experimental. Veja habilidades de script para mais detalhes.

Name

Ler Parallel

Um identificador não exclusivo do Instance.Nomes são usados para manter a hierarquia do objeto organizada, além de permitir que scripts acessem objetos específicos.O nome de uma instância não pode exceder 100 caracteres em tamanho.

O nome de um objeto é frequentemente usado para acessar o objeto através da hierarquia do modelo de dados usando os seguintes métodos:


local Workspace = game:GetService("Workspace")
local baseplate = Workspace.Baseplate
local baseplate = Workspace["Baseplate"]
local baseplate = Workspace:FindFirstChild("BasePlate")

Para tornar um objeto acessível usando o operador ponto ( . ), seu nome deve começar com um sublinhado ou letra, e o resto do nome só pode conter letras, números ou sublinhados (sem outros caracteres especiais).Se o nome de um objeto não seguir essa síntese, ele não será acessível usando o operador ponto e Luau não interpretará seu nome como um identificador.

Se mais de um objeto com o mesmo nome forem irmãos, qualquer tentativa de indexar um objeto por esse nome retornará apenas um dos objetos, semelhante a Instance:FindFirstChild(), mas nem sempre o objeto desejado.Se um objeto específico precisa ser acessado por meio de código, é recomendado dar a ele um nome único ou garantir que nenhum de seus irmãos compartilhe o mesmo nome.

Veja também Instance:GetFullName() para obter um nome completo, incluindo a hierarquia do objeto.

Parent

Não replicado
Ler Parallel

A propriedade Parent determina o pai hierárquico do Instance.A seguinte terminologia é comumente usada ao falar sobre como essa propriedade é definida:

  • Um objeto é um filho de, ou é parentado para , outro objeto quando seu Parent for definido para esse objeto.

  • Os descendentes da descendência de um Instance são os filhos desse objeto, mais os descendentes das crianças também.

  • Os ancestrais de um Instance são todos os objetos dos quais a instância é descendente.

É da propriedade Parent que muitos outros membros da API obterão o nome, como GetChildren() e FindFirstChild().Essa propriedade também é usada para gerenciar se um objeto existe na experiência ou precisa ser removido.Enquanto o pai de um objeto estiver no DataModel, ele será armazenado em uma variável, ou será referenciado pela propriedade de outro objeto, o objeto permanecerá na experiência; caso contrário, o objeto será removido automaticamente.

Chamar Destroy() vai definir o Parent de um Instance e todos os seus descendentes para nil e também bloquear a propriedade Parent.Um erro é levantado ao definir o Parent de um objeto destruído.

Objetos recém-criados usando Instance.new() não terão um pai e, geralmente, não serão visíveis ou funcionarão até que um seja definido.

Replicação de Objeto

Um objeto criado pelo servidor não se replicará aos clientes até que seja associado a algum objeto que seja replicado.Ao criar um objeto e definir muitas propriedades, é recomendado definir a propriedade última .Isso garante que o objeto seja replicado uma vez, em vez de replicar muitas alterações de propriedade.


local Workspace = game:GetService("Workspace")
-- Defina o pai da nova instância último (recomendado)
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = Workspace

No entanto, se as peças paternas forem para um Model cujo pai ainda não foi definido, paternar cada peça para esse modelo é aceitável desde que o modelo não teria sido replicado.

RobloxLocked

Oculto
Segurança do plugin
Ler Parallel

Essa propriedade costumava proteger objetos no serviço CoreGui de serem alterados por usuários de maneira não autorizada.Ela foi descontinuada e não faz nada.

Sandboxed

Não replicado
Ler Parallel

Transforma a instância em um contêiner sandboxado , um recurso experimental que limita as ações que os scripts dentro de um determinado contêiner podem executar.Veja capacidades de script para mais detalhes.

UniqueId

UniqueId
Não replicado
Não scriptável
Segurança Roblox
Ler Parallel

Um identificador exclusivo para a instância, distinto de Instance.Name que não é necessariamente exclusivo.

Métodos

AddTag

()

Este método aplica uma etiqueta à instância, sem efeito se a etiqueta já for aplicada.Adicionar com sucesso uma tag disparará um sinal criado por CollectionService:GetInstanceAddedSignal() com a tag fornecida.

Avertimentos
  • As tags de uma instância que foram adicionadas do lado do cliente serão descartadas se o servidor adicionar ou remover uma tag nessa instância mais tarde, pois o servidor replica todas as tags juntas e substitui as tags anteriores.

  • Ao rotular uma instância, é comum que alguns recursos sejam usados para dar à etiqueta sua funcionalidade, por exemplo, conexões de eventos ou tabelas.Para evitar vazamentos de memória, é uma boa ideia limpar esses (desconectar, definir como nil , etc.) quando não forem mais necessários para uma etiqueta.Faça isso ao chamar Instance:RemoveTag(), chamar Instance:Destroy() ou em uma função conectada a um sinal retornado por CollectionService:GetInstanceRemovedSignal().

Parâmetros

tag: string
Valor Padrão: ""

Devolução

()

ClearAllChildren

()

Essa função destrói todos os filhos e descendentes de uma instância.


local part = Instance.new("Part")
-- Add some sparkles
for i = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
local sc = Instance.new("Sparkles")
sc.Parent = sparkles
end
print("Children:", #part:GetChildren()) --> Children: 3
part:ClearAllChildren()
print("Children:", #part:GetChildren()) --> Children: 0

Se você não deseja destruir todas as crianças e descendentes, use Instance:GetChildren() ou Instance:GetDescendants() para percorrer essas crianças/descendentes e selecionar o que deve destruir.Por exemplo, o seguinte código de exemplo destruirá todos os BaseParts descendentes de um Model :


local Workspace = game:GetService("Workspace")
local model = Workspace:FindFirstChild("TestModel")
for _, descendant in model:GetDescendants() do
if descendant:IsA("BasePart") then
descendant:Destroy()
end
end

Devolução

()

Clone() cria uma cópia de uma instância e todos os seus descendentes, ignorando todas as instâncias que não são Archivable .A cópia da instância raiz é retornada por este método e seu Parent é definido como nil .Observe que, se a própria instância tiver Archivable definido para false, essa função retornará nil .

Se uma propriedade de referência, como ObjectValue.Value for definida em uma instância clonada, o valor da propriedade da cópia depende do valor da propriedade original:

  • Se uma propriedade de referência se referir a uma instância que foi também clonada, a cópia se referirá à cópia.
  • Se uma propriedade de referência se referir a um objeto que não foi clonado , o mesmo valor é mantido na cópia.

Devolução

Amostras de código

Demonstrates cloning a model using Instance:Clone().

Cloning an Instance

local Workspace = game:GetService("Workspace")
-- Get a reference to an existing object
local model = script.Parent.Model
-- Create a clone of the model
local clone = model:Clone()
-- Move the clone so it's not overlapping the original model
clone:PivotTo(model.PrimaryPart.CFrame - (Vector3.xAxis * 10))
-- Add the clone to the Workspace
clone.Parent = Workspace

Destroy

()

Define a propriedade Instance.Parent para nil, bloqueia a propriedade Instance.Parent e desconecta todas as conexões, chamando Destroy() em todos os filhos.Essa função é a maneira correta de descartar objetos que não são mais necessários.

Dispor de objetos desnecessários é importante, pois objetos e conexões desnecessários em um local consomem memória que pode levar a problemas sérios de desempenho ao longo do tempo.

Como melhor prática após chamar Destroy() em um objeto, defina qualquer variável que referencie o objeto (ou seus descendentes) para nil.Isso impede que seu código acesse qualquer coisa relacionada ao objeto.


local part = Instance.new("Part")
part.Name = "Hello, world"
part:Destroy()
-- Não faça isso:
print(part.Name) --> "Olá, mundo"
-- Faça isso para evitar que a linha acima funcione:
part = nil

Uma vez que um Instance foi destruído por este método, não pode ser reutilizado porque a propriedade Instance.Parent está bloqueada.Para temporariamente remover um objeto em vez de destruí-lo, defina para >.Por exemplo:


local Workspace = game:GetService("Workspace")
object.Parent = nil
task.wait(2)
object.Parent = Workspace

Para destruir um objeto após um período de tempo definido, use Debris:AddItem() .


Devolução

()

Amostras de código

Demonstrates destroying a Part using the Instance:Destroy() function.

This function is the correct way to dispose of objects that are no longer required.

Instance:Destroy()

local part = script.Parent.Part
part:Destroy()

FindFirstAncestor

Escrever Parallel

Retorna o primeiro ancestral do Instance cujo Instance.Name é igual ao nome dado.

Essa função funciona em direção ao topo, o que significa que ela começa no imediato da instância Instance.Parent e funciona em direção ao DataModel.Se nenhum ancestral correspondente for encontrado, ele retorna nil .

O seguinte trecho de código encontraria o primeiro ancestral do objeto chamado Car.


local car = object:FindFirstAncestor("Car")

Para variantes dessa função que encontram ancestrais de uma classe específica, consulte Instance:FindFirstAncestorOfClass() e Instance:FindFirstAncestorWhichIsA().

Parâmetros

name: string

O Instance.Name a ser procurado.

Valor Padrão: ""

Devolução

FindFirstAncestorOfClass

Escrever Parallel

Retorna o primeiro ancestral do Instance cujo Object.ClassName é igual à classe dada.

Essa função funciona em direção ao topo, o que significa que ela começa no imediato da instância Instance.Parent e funciona em direção ao DataModel.Se nenhum ancestral correspondente for encontrado, ele retorna nil .

Um uso comum dessa função é encontrar o Model a BasePart pertence. Por exemplo:


local model = part:FindFirstAncestorOfClass("Model")

Essa função é uma variante de Instance:FindFirstAncestor() que verifica a propriedade Object.ClassName em vez de Instance.Name.Instance:FindFirstAncestorWhichIsA() também existe, usando o método Object:IsA() em vez de respeitar a herança de classe.

Parâmetros

className: string

O Object.ClassName a ser procurado.

Valor Padrão: ""

Devolução

FindFirstAncestorWhichIsA

Escrever Parallel

Retorna o primeiro ancestral do Instance para quem Object:IsA() retorna verdadeiro para a classe dada.

Essa função funciona em direção ao topo, o que significa que ela começa no imediato da instância Instance.Parent e funciona em direção ao DataModel.Se nenhum ancestral correspondente for encontrado, ele retorna nil .

Ao contrário de Instance:FindFirstAncestorOfClass(), esta função usa Object:IsA() que respeita a herança de classe. Por exemplo:


print(part:IsA("Part")) --> true
print(part:IsA("BasePart")) --> true
print(part:IsA("Instance")) --> true

Portanto, o seguinte exemplo de código retornará o primeiro ancestral BasePart , independentemente de se ele é um WedgePart , MeshPart ou Part.


local part = object:FindFirstAncestorWhichIsA("BasePart")

Veja também Instance:FindFirstAncestor() .

Parâmetros

className: string

O Object.ClassName a ser procurado.

Valor Padrão: ""

Devolução

FindFirstChild

Escrever Parallel

Retorna o primeiro filho do Instance com o nome dado, ou nil se não existir tal filho.Se o argumento opcional recursive for true, esta função pesquisa todos os descendentes em vez de apenas os filhos imediatos do Instance.

Verificando a existência de um objeto

FindFirstChild() é necessário se você precisar verificar se um objeto existe antes de continuar.Tentar indexar uma criança por nome usando o operador ponto lança um erro se a criança não existir.


local Workspace = game:GetService("Workspace")
-- Os seguintes erros de linha ocorrem se a peça não existir no espaço de trabalho
Workspace.Part.Transparency = 0.5

Uma abordagem melhor é usar FindFirstChild() para verificar primeiro Part , então usar uma declaração if para executar código que precisa dela.


local Workspace = game:GetService("Workspace")
local part = Workspace:FindFirstChild("Part")
if part then
part.Transparency = 0.5
end
Encontrando uma criança cujo nome corresponde a uma propriedade

Às vezes, o Name de um objeto é o mesmo que o de uma propriedade de seu Parent .Ao usar o operador ponto, as propriedades têm precedência sobre as crianças se compartilharem um nome.

No seguinte exemplo, um Folder chamado Color é adicionado a um Part, que também tem a propriedade Part.Color.Observe que part.Color refere-se ao valor da propriedade Color3 , não à instância filha Folder.Um benefício de usar FindFirstChild() é que a introdução de novas propriedades não impõe um risco ao seu código.


local part = Instance.new("Part")
local folder = Instance.new("Folder")
folder.Name = "Color"
folder.Parent = part
local c1 = part.Color -- Propriedade
local c2 = part:FindFirstChild("Color") -- The child folder
Notas de desempenho

FindFirstChild() leva cerca de 20% mais tempo do que usar o operador de ponto e quase 8 vezes mais tempo do que simplesmente armazenar uma referência a um objeto.Portanto, você deve evitar chamá-lo em código dependente de desempenho, como em loops apertados ou funções conectadas a RunService.Heartbeat e RunService.PreRender.Em vez disso, armazene o resultado em uma variável, ou considere usar ChildAdded ou WaitForChild() para detectar quando um filho de um determinado nome ficará disponível.

Parâmetros

name: string

O Instance.Name a ser pesquisado.

Valor Padrão: ""
recursive: boolean

Se a pesquisa deve ser conduzida recursivamente ou não.

Valor Padrão: false

Devolução

Amostras de código

O abaixo procuraria no Espaço de Trabalho por um nome de objeto "Tijolo". Se encontrado, mudaria o nome do objeto para "Foo".

Instância: FindFirstChild

local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end

FindFirstChildOfClass

Escrever Parallel

Retorna o primeiro filho do Instance cujo ClassName é igual ao dado className .Ao contrário de Instance:FindFirstChildWhichIsA(), esta função retorna apenas objetos cuja classe corresponda a className, ignorando a herança de classe.Se nenhuma criança correspondente for encontrada, esta função retorna nil .

Parâmetros

className: string

O Object.ClassName a ser procurado.

Valor Padrão: ""

Devolução

Amostras de código

Instance:FindFirstChildOfClass

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid
while not humanoid do
humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
character.ChildAdded:Wait()
end
end

FindFirstChildWhichIsA

Escrever Parallel

Retorna o primeiro filho do Instance para quem Object:IsA() retorna verdadeiro para a classe dada.

Se nenhuma criança correspondente for encontrada, esta função retorna nil .Se o argumento recursivo opcional for verdadeiro, esta função pesquisa todos os descendentes em vez de apenas os filhos imediatos do Instance.

Ao contrário de Instance:FindFirstChildOfClass(), esta função usa Object:IsA() que respeita a herança de classe. Por exemplo:


print(part:IsA("Part")) --> verdadeiro
print(part:IsA("BasePart")) --> verdadeiro
print(part:IsA("Instance")) --> true

Portanto, o seguinte exemplo de código retornará o primeiro filho BasePart , independentemente de se ele é um WedgePart , MeshPart ou Part .


local part = object:FindFirstChildWhichIsA("BasePart")

Desenvolvedores que buscam uma criança por nome devem usar Instance:FindFirstChild() em vez disso.

Parâmetros

className: string

O Object.ClassName a ser pesquisado.

Valor Padrão: ""
recursive: boolean

Se a pesquisa deve ser conduzida recursivamente ou não.

Valor Padrão: false

Devolução

FindFirstDescendant

Escrever Parallel

Retorna o primeiro descendente encontrado com o dado Instance.Name.

Este método está desativado e não pode ser usado.Para encontrar o primeiro descendente de uma instância, considere usar o parâmetro recursive em Instance:FindFirstChild() em vez disso.

Parâmetros

name: string

O Instance.Name para procurar.

Valor Padrão: ""

Devolução

GetActor

Escrever Parallel

Se o Instance for um Actor, o Actor próprio é retornado.Caso contrário, seu ancestral mais próximo Actor é retornado.Se nenhum ancestral for um Actor , o resultado é nil .


Devolução

GetAttribute

Variant
Escrever Parallel

Este método retorna o valor que foi atribuído ao nome do atributo dado. Se nenhum atributo foi atribuído, nil é retornado.

Por exemplo, o seguinte trecho de código define e então obtém o valor do atributo da instância InitialPosition:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)
Veja também

Parâmetros

attribute: string

O nome do atributo a ser recuperado.

Valor Padrão: ""

Devolução

Variant

O valor que foi atribuído ao nome do atributo dado. Se nenhum atributo foi atribuído, nil é retornado.

GetAttributeChangedSignal

Essa função retorna um evento que se comporta exatamente como o evento Changed, exceto que só é disparado quando o atributo específico muda; efetivamente, é semelhante a GetPropertyChangedSignal() para atributos.

É geralmente uma boa ideia usar esse método em vez de uma conexão com Changed com uma função que verifica o nome do atributo.Chamadas subsequentes a este método no mesmo objeto com o mesmo nome de atributo retornam o mesmo evento.

O seguinte exemplo de código retorna um sinal que ativa a função attributeChanged() quando o atributo da peça InitialPosition muda:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local function attributeChanged()
print("Attribute changed")
end
part:GetAttributeChangedSignal("InitialPosition"):Connect(attributeChanged)

Veja também Instance.AttributeChanged que dispara sempre que algum atributo for alterado na instância.

Parâmetros

attribute: string

O nome do atributo especificado para o qual o sinal de alteração está sendo retornado.

Valor Padrão: ""

Devolução

Um evento que dispara quando o atributo dado muda.

GetAttributes

Escrever Parallel

Este método retorna um dicionário de pares de chave-valor para cada atributo onde a chave é o nome do atributo e o valor é um valor não nil .

Por exemplo, o seguinte trecho de código exibe os atributos e valores de uma instância:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", part.Position)
part:SetAttribute("CanUse", true)
for name, value in part:GetAttributes() do
print(name .. " = " .. value)
end

Veja também Instance:GetAttribute() que retorna o valor que foi atribuído ao nome do atributo dado.


Devolução

Um dicionário de pares de corda → variáveis para cada atributo onde a corda é o nome do atributo e a variável é um valor não nulo.

GetChildren

Instances
Escrever Parallel

Retorna um array (uma tabela numericamente indexada) que contém todos os filhos diretos da instância ou todos os Instance que seu Parent é igual ao objeto.O array pode ser iterado usando um for-loop numérico ou genérico:


local Workspace = game:GetService("Workspace")
-- Exemplo de ciclo for numérico
local children = Workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

local Workspace = game:GetService("Workspace")
-- Exemplo genérico de for-loop
local children = Workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

As crianças são classificadas pela ordem em que sua propriedade Parent foi definida para o objeto.

Veja também a função GetDescendants .


Devolução

Instances

Um array que contém os filhos da instância.

Amostras de código

The below would print the name of all objects currently in Workspace when ran.

Instance:GetChildren

local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end

GetDebugId

Não navegável
Segurança do plugin

Retorna uma string codificada do ID de depuração usado internamente pelo Roblox. Observe que:

  • Este item está protegido. Tentar usá-lo em um Script ou LocalScript causará um erro.
  • Um ID de debug é um ID usado em processos de depuração.Permite que um depurador leia cada instrução antes que uma aplicação processe-a.Todos os objetos no Roblox agem como processos e instruções de execução (ou "código") que podem ser debugadas se necessário.
  • Isso pode ser útil para plugins que precisam distinguir objetos semelhantes uns dos outros (como objetos que compartilham o mesmo nome).

Parâmetros

scopeLength: number

O comprimento do escopo.

Valor Padrão: 4

Devolução

A string de ID de depuração.

Amostras de código

Instance:GetDebugId

print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12

GetDescendants

Escrever Parallel

Este método de objeto retorna um array que contém todos os descendentes desse objeto.Ao contrário de Instance:GetChildren(), que retorna apenas os filhos imediatos de um objeto, este método encontra cada filho do objeto, cada filho desses filhos e assim por diante.


Devolução

Um array que contém os descendentes da instância.

Amostras de código

GetDescendants is often used to do something to all the descendants that are a particular type of object. The code in this example uses GetDescendants and Instance:IsA() to find all of the parts in the workspace and turns them green.

Instance:GetDescendants

local descendants = workspace:GetDescendants()
-- Loop through all of the descendants of the Workspace. If a
-- BasePart is found, the code changes that parts color to green
for _, descendant in pairs(descendants) do
if descendant:IsA("BasePart") then
descendant.BrickColor = BrickColor.Green()
end
end

GetFullName

Escrever Parallel

Retorna uma string que descreve a ancestralidade da instância.A string é uma concatenação do Name do objeto e de seus ancestrais, separados por períodos.O DataModel ( game ) não é considerado.Por exemplo, um Part dentro do Workspace pode retornar Workspace.Part .

Quando chamado em um Instance que não é um descendente do DataModel , esta função considera todos os ancestrais até e incluindo o mais antigo sem um Parent .

Essa função é útil para registro e depuração.Você não deve tentar analisar a string retornada para qualquer operação útil; esta função não escapa períodos (ou qualquer outro símbolo) em nomes de objetos.Em outras palavras, embora sua saída muitas vezes pareça ser um identificador Luau válido, não é garantida.


Devolução

O nome completo do Instance .

Amostras de código

This code sample demonstrates the behavior of Instance:GetFullName(). It shows how the function behaves when called on an object not in the DataModel hierarchy, and it also shows how the return value does not escape special characters.

Instance:GetFullName

-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire

This code sample re-implements the Instance:GetFullName() function in Lua.

Instance:GetFullName Lua Implementation

local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera

GetStyled

Variant

Este método retorna o valor estilizado ou explicitamente modificado da propriedade especificada, ou o valor padrão da propriedade se não tiver sido estilizado/modificado.Isso difere ligeiramente de acessar o valor da propriedade diretamente, como [GuiObject].Rotation, que retorna o valor padrão ou modificado da propriedade.


local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local coreSheet = ReplicatedStorage:FindFirstChild("CoreSheet")
local rule = coreSheet:FindFirstChildWhichIsA("StyleRule")
rule.Selector = "TextButton"
-- Referência a um botão
local button = HUDContainer:FindFirstChildWhichIsA("TextButton")
print(button:GetStyled("Rotation")) --> 0 (valor padrão)
print(button.Rotation) --> 0 (valor padrão)
-- Aplicar rotação através da propriedade de regra de estilo
rule:SetProperty("Rotation", 30)
print(button:GetStyled("Rotation")) --> 30 (valor estilizado com base em regra)
print(button.Rotation) --> 0 (valor padrão)
-- Modificar/substituir propriedade estilizada explicitamente
button.Rotation = 45
print(button:GetStyled("Rotation")) --> 45 ( valor modificado )
print(button.Rotation) --> 45 (modified value)

Parâmetros

name: string

Nome da propriedade para consultar.

Valor Padrão: ""

Devolução

Variant

O valor estilizado ou explicitamente modificado da propriedade especificada, ou o valor padrão da propriedade se não tiver sido estilizado/modificado.

GetStyledPropertyChangedSignal

Este método retorna um evento que se comporta exatamente como o evento StyledPropertiesChanged, exceto que só é disparado quando a propriedade de estilo dada muda.É geralmente uma boa ideia usar esse método em vez de uma conexão com StyledPropertiesChanged 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.

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.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local meterBar = HUDContainer.MeterBar
local function stylePropertyChanged()
print("Style property changed!")
end
meterBar:GetStyledPropertyChangedSignal("AnchorPoint"):Connect(stylePropertyChanged)

Parâmetros

property: string

Nome da propriedade de estilo para a qual ouvir alterações.

Valor Padrão: ""

Devolução

Evento que dispara quando a propriedade de estilo dada muda.

GetTags

Escrever Parallel

Este método retorna um array de tags aplicadas à instância dada, como strings.Você pode adicionar tags tanto no Studio na janela Propriedades ou em tempo de execução com AddTag() .

Este método é útil quando você quer fazer algo com várias etiquetas em uma instância de uma vez.No entanto, é ineficiente usar esse método para verificar a existência de uma única tag; em vez disso, use HasTag() para verificar uma tag específica.


Devolução

HasTag

Escrever Parallel

Este método retorna true se a tag fornecida foi adicionada ao objeto.Você pode adicionar tags tanto no Studio na janela Propriedades ou em tempo de execução com AddTag().

Parâmetros

tag: string
Valor Padrão: ""

Devolução

IsAncestorOf

Escrever Parallel

Retorna verdadeiro se um Instance for um ancestral do descrente dado.

Um Instance é considerado o ancestral de um objeto se o objeto de Instance.Parent ou um de seus pais de Instance.Parent for definido como Instance.

Veja também, Instance:IsDescendantOf() .

Parâmetros

descendant: Instance

O descendente Instance .

Valor Padrão: ""

Devolução

Verdadeiro se o Instance for um ancestral do descrente dado.

Amostras de código

Demonstrates determining if one instance is the ancestor of another using Instance:IsAncestorOf()

Workspace and SpawnLocation are ancestors of the SpawnLocation's decal. Workspace is an ancestor of SpawnLocation.

SpawnLocation and its decal are descendants of Workspace, not ancenstors. Decal is a descendant to SpawnLocation, not an ancestor.

Instance:IsAncestorOf()

local Workspace = game:GetService("Workspace")
local spawnLocation = Workspace.SpawnLocation
local decal = spawnLocation.Decal
-- These statements are true
print(Workspace:IsAncestorOf(spawnLocation))
print(Workspace:IsAncestorOf(decal))
print(spawnLocation:IsAncestorOf(decal))
-- These statements are false
print(spawnLocation:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(spawnLocation))

IsDescendantOf

Escrever Parallel

Retorna true se um Instance for descendente do ancestral dado.

Observe que IsDescendantOf() não pode ser usado com um parâmetro de nil para verificar se um objeto foi removido.

Veja também Instance:IsAncestorOf() .

Parâmetros

ancestor: Instance

O ancestral Instance .

Valor Padrão: ""

Devolução

Verdadeiro se o Instance for um descendente do ancestral dado.

Amostras de código

Instância:IsDescendantOf

local part = Instance.new("Part")
print(part:IsDescendantOf(game))
--> falso
part.Parent = workspace
print(part:IsDescendantOf(game))
--> verdadeiro
part.Parent = game
print(part:IsDescendantOf(game))
--> true

IsPropertyModified

Retorna true se o valor armazenado na propriedade especificada for igual ao padrão instanciado pelo código.Por exemplo, se exportar a propriedade TextSize de um TextLabel indicar 8 , então chamar IsPropertyModified("TextSize") no rótulo retornará false porque 8 é o valor padrão para TextLabel.TextSize quando o rótulo é criado via Instance.new("TextLabel") em vez de ser inserido através dos fluxos de trabalho de inserção do Studio.

Observe que se este método retornar , o estilo não afetará a propriedade porque modificar explicitamente uma propriedade tem precedência sobre estilizá-la.

Parâmetros

property: string

Nome da propriedade para consultar.

Valor Padrão: ""

Devolução

Booleano indicando se a propriedade foi modificada.

RemoveTag

()

Este método remove uma tag de uma instância.Não será lançado um erro se o objeto não tiver a tag.Remover com sucesso uma etiqueta disparará um sinal criado por CollectionService:GetInstanceRemovedSignal() com a etiqueta dada.

Observe que, ao rotular uma instância, é comum que alguns recursos sejam usados para dar à etiqueta sua funcionalidade, por exemplo, conexões de eventos ou tabelas.Para evitar vazamentos de memória, é uma boa ideia limpar esses (desconectar, definir como nil , etc.) quando não forem mais necessários para uma etiqueta.

Parâmetros

tag: string
Valor Padrão: ""

Devolução

()

ResetPropertyToDefault

()

Redefine uma propriedade para o seu valor padrão.Por exemplo, chamar ResetPropertyToDefault("Rotation") em um TextLabel é equivalente a definir seu Rotation para 0 (o valor padrão da propriedade).Este método pode ser usado para garantir que o estilo substituirá o valor padrão desta propriedade.

Parâmetros

property: string

Nome da propriedade para redefinir.

Valor Padrão: ""

Devolução

()

SetAttribute

()

Este método define o atributo com o nome dado para o valor dado.Se o valor fornecido for nil, o atributo será removido, pois nil é retornado por padrão.

Por exemplo, o seguinte trecho de código define o atributo InitialPosition da instância para Vector3.new(0, 10, 0) :


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Limitações

Requisitos e restrições de nomeação:

  • Nomes devem usar apenas caracteres alfanuméricos e sublinhado.
  • Não são permitidos espaços ou símbolos exclusivos.
  • As cordas devem ter 100 caracteres ou menos.
  • Nomes não são permitidos para começar com RBX a menos que o chamador seja um script de núcleo do Roblox (reservado para o Roblox).

Ao tentar definir um atributo para um tipo não suportado, um erro será lançado.

Veja também

Parâmetros

attribute: string

O nome do atributo sendo definido.

Valor Padrão: ""
value: Variant

O valor para definir o atributo especificado.

Valor Padrão: ""

Devolução

()

WaitForChild

Pode render

Retorna o filho do Instance com o nome dado.Se a criança não existir, ela produzirá o subprocesso atual até que ela o faça.Se o parâmetro timeOut for especificado, este método expirará após o número especificado de segundos e retornará nil .

Uso primário

WaitForChild() é extremamente importante ao trabalhar com código executado pelo cliente em um LocalScript .O motor do Roblox não garante o tempo ou a ordem em que os objetos são replicados do servidor para o cliente.Além disso, se uma experiência tiver setado para verdadeiro, que estão longe do personagem do jogador pode não ser transmitido para o cliente, potencialmente causando falhas em scripts ao indexar objetos que ainda não existem no cliente.

Notas
  • Essa função não retorna se uma criança com o nome dado existe quando a chamada é feita.
  • Instance:FindFirstChild() é uma alternativa mais eficiente para WaitForChild() para objetos que se supõe existirem.
  • Se uma chamada a este método exceder 5 segundos sem retornar e nenhum parâmetro timeOut for especificado, uma advertência será impressa na saída que o thread pode produzir indefinidamente.

Parâmetros

childName: string

O Instance.Name a ser procurado.

Valor Padrão: ""
timeOut: number

Um parâmetro de tempo limite opcional.

Valor Padrão: ""

Devolução

Amostras de código

The following code waits for an instance named "Part" to be added to Workspace.

Instance:WaitForChild

local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")

Eventos

AncestryChanged

Incêndios quando a propriedade Instance.Parent do objeto ou uma de suas ancestrais é alterada.

Este evento inclui dois parâmetros: child refere-se ao Instance cujo Instance.Parent foi realmente alterado, enquanto parent refere-se ao novo Instance.Parent desta instância.

Você pode usar esse evento para rastrear a exclusão de uma instância no Studio, como exclusão manual no Explorer ou através de um plugin.Se você precisar detectar quando uma instância é destruída usando Instance:Destroy(), use o evento Instance.Destroying em vez disso.

Parâmetros

child: Instance

O Instance cujo Instance.Parent foi alterado.

parent: Instance

O novo Instance.Parent da Instance cujo Instance.Parent foi alterado.


Amostras de código

Demonstrates detecting changes to an instance's ancestry by connecting to the Instance.AncestryChanged event.

The ChangingPart's Parent is set to different values overtime. The parent of the part is the part's ancestor, so the Instance.AncestryChanged event will fire whenever it changes.

Instance.AncestryChanged

local Workspace = game:GetService("Workspace")
local redPart = script.Parent.RedPart
local bluePart = script.Parent.BluePart
local changingPart = script.Parent.ChangingPart
-- Change the color of changingPart based on it's Parent
local function onAncestryChanged(part: Part, parent: Instance)
if parent == redPart then
changingPart.Color = Color3.new(1, 0, 0)
elseif parent == bluePart then
changingPart.Color = Color3.new(0, 0, 1)
else
changingPart.Color = Color3.new(1, 1, 1)
end
print(`{part.Name} is now parented to {parent.Name}`)
end
changingPart.AncestryChanged:Connect(onAncestryChanged)
-- Set changingPart's Parent property to different instances over time
while true do
task.wait(2)
changingPart.Parent = redPart
task.wait(2)
changingPart.Parent = bluePart
task.wait(2)
changingPart.Parent = Workspace
end

AttributeChanged

Este evento dispara sempre que algum atributo é alterado na instância, incluindo quando um atributo é definido como nil .O nome do atributo modificado é passado para a função conectada.

Por exemplo, o seguinte trecho de código conecta a função attributeChanged() à fogo sempre que um dos atributos da peça muda:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)

Veja também Instance:GetAttributeChangedSignal() que retorna um evento que dispara quando um atributo específico for modificado.

Parâmetros

attribute: string

O nome do atributo que foi alterado.


ChildAdded

Incêndios após um objeto ser associado a este Instance .

Observe, ao usar essa função em um cliente para detectar objetos criados pelo servidor, é necessário usar Instance:WaitForChild().Isso ocorre porque o objeto e seus descendentes não são garantidos de se replicarem do servidor para o cliente simultaneamente.Por exemplo:


local Workspace = game:GetService("Workspace")
Workspace.ChildAdded:Connect(function(child)
-- Use WaitForChild() since descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)

Observe, essa função só funciona para filhos imediatos do Instance. Para uma função que captura todos os descendentes, use Instance.DescendantAdded .

Veja também Instance.ChildRemoved .

Parâmetros

child: Instance

O Instance que foi adicionado.


Amostras de código

This snippet prints the names of objects as they are added to the Workspace:

Instance.ChildAdded

local function onChildAdded(instance)
print(instance.Name .. " added to the workspace")
end
workspace.ChildAdded:Connect(onChildAdded)
local part = Instance.new("Part")
part.Parent = workspace --> Part added to the Workspace

ChildRemoved

Incêndios após uma criança ser removida deste Instance .

Removido se refere a quando o pai de um objeto é alterado deste Instance para algo diferente deste Instance.Observe, este evento também será disparado quando uma criança for destruída (usando Instance:Destroy() ) pois a função de destruição define o pai de um objeto para nil .

Essa função só funciona para filhos imediatos do Instance. Para uma função que captura todos os descendentes, use Instance.DescendantRemoving.

Veja também Instance.ChildAdded .

Parâmetros

child: Instance

O Instance que foi removido.


Amostras de código

This snippet prints the names of objects as they are removed from the Workspace:

Instance.ChildRemoved

local function onChildRemoved(instance)
print(instance.Name .. " removed from the workspace")
end
workspace.ChildRemoved:Connect(onChildRemoved)
local part = Instance.new("Part")
part.Parent = workspace
task.wait(2)
part:Destroy()

DescendantAdded

Este evento é acionado após um descendente ser adicionado ao Instance.

Ao disparar para cada descendente, cuidar de um objeto para o Instance disparará o evento para esse objeto e todos os seus descendentes individualmente.

Se você está apenas preocupado com as crianças diretas do da Instance, use Instance.ChildAdded.

Veja também Instance.DescendantRemoving .

Parâmetros

descendant: Instance

O Instance que foi adicionado.


Amostras de código

O seguinte exemplo imprimirá o nome de qualquer objeto que seja adicionado ao Espaço de Trabalho:

Instância.DescendenteAdicionado

local function onDescendantAdded(descendant)
print(descendant)
end
workspace.DescendantAdded:Connect(onDescendantAdded)
local part = Instance.new("Part")
part.Parent = workspace

DescendantRemoving

Este evento dispara imediatamente antes de as alterações do pai Instance para que uma instância descendente não seja mais descendente.Destroy() altera o Parent de uma instância para nil, então chamar esse método em um descrente do pai fará com que esse evento seja disparado.

Como este evento dispara antes de a remoção do descendente, o pai do descendente será mantido inalterado no momento do disparo deste evento.Se o descrente também for uma criança direta do pai, este evento será disparado antes de .

Se um descendente tem filhos, este evento dispara com o descendente primeiro, seguido por seus descendentes.

Aviso

Este evento dispara com o objeto descendente que está sendo removido.Tentar definir o Parent do descendente para outra coisa falhará.Abaixo está um exemplo que demonstra isso:


local Workspace = game:GetService("Workspace")
Workspace.DescendantRemoving:Connect(function(descendant)
-- Do not manipulate the parent of the descendant in this function!
-- This event fires BECAUSE the parent was manipulated, and the change hasn't happened yet
-- Therefore, it is problematic to change the parent like this:
descendant.Parent = game
end)
local part = Instance.new("Part")
part.Parent = Workspace
part.Parent = nil

Veja também DescendantAdded .

Parâmetros

descendant: Instance

Amostras de código

The following example prints the name of any descendant as it is being removed from the Workspace:

Instance.DescendantRemoving

workspace.DescendantRemoving:Connect(function(descendant)
print(descendant.Name .. " is currently parented to " .. tostring(descendant.Parent))
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
--> Part is currently parented to Workspace
print(part.Parent)
--> nil

Destroying

O Instance nunca será excluído da memória enquanto uma função conectada ainda estiver usando-o.No entanto, se a função retornar em qualquer ponto, os descendentes da Instance e seus pais serão parentados para nil.

Se a propriedade Workspace.SignalBehavior for definida como Enum.SignalBehavior.Immediate, este evento é disparado imediatamente antes que o Instance ou um de seus ancestrais seja destruído com Instance:Destroy().

Se a propriedade Workspace.SignalBehavior for definida como Enum.SignalBehavior.Deferred, este evento será disparado no próximo ponto de retomada, que será depois que o Instance ou um de seus ancestrais for destruído com Instance:Destroy().

Com o comportamento Deferred, conectar um script ao seu próprio evento Instance.Destroying é problemático, pois o script será destruído antes que o retorno de chamada possa ser chamado (o que significa que não será executado).

Ao excluir um Instance em Studio, como excluir manualmente através do Explorer ou através de um plugin, o Instance não é destruído.Em vez disso, o pai é definido como nil que você pode rastrear com Instance.AncestryChanged .


Amostras de código

This sample demonstrates how, when using Immediate signal behavior, an Instance being destroyed remains in place until the connected function yields.

Using the Destroying Event (Immediate signals)

local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()

This sample demonstrates how, when using Deferred signal behavior, an Instance is destroyed before the signal fires.

Using the Destroying Event (Deferred signals)

local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())

StyledPropertiesChanged

Este evento dispara sempre que qualquer propriedade de estilo é alterada na instância, incluindo quando uma propriedade é definida como nil.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local meterBar = HUDContainer.MeterBar
local function stylePropertyChanged()
print("Styled properties changed")
end
meterBar:StyledPropertiesChanged():Connect(stylePropertyChanged)