Instance
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
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
Determina se um Instance e seus descendentes podem ser clonados usando Instance:Clone() e podem ser salvos/publicados.
O conjunto de capacidades permitidas para serem usadas para scripts dentro deste contêiner.
Um identificador não exclusivo do Instance.
Determina o pai hierárquico do Instance .
Uma propriedade obsoleta que costumava proteger CoreGui objetos.
Transforma a instância em um contêiner sandboxado.
Um identificador exclusivo para a instância.
Métodos
Aplica uma etiqueta à instância.
Essa função destrói todos os filhos de uma instância.
Crie uma cópia de uma instância e todos os seus descendentes, ignorando instâncias que não sejam Archivable .
Define a propriedade Instance.Parent para nil, bloqueia a propriedade Instance.Parent e desconecta todas as conexões, chamando Destroy() em todos os filhos.
Retorna o primeiro ancestral do Instance cujo Instance.Name é igual ao nome dado.
Retorna o primeiro ancestral do Instance cujo Object.ClassName é igual à classe dada.
Retorna o primeiro ancestral do Instance para quem Object:IsA() retorna verdadeiro para a classe dada.
Retorna o primeiro filho do Instance encontrado com o nome dado.
Retorna o primeiro filho do Instance cujo ClassName é igual ao nome da classe dado.
Retorna o primeiro filho do Instance para quem Object:IsA() retorna verdadeiro para a classe dada.
Retorna o primeiro descendente encontrado com o dado Instance.Name.
Retorna o Actor associado à Instância, se houver.
Retorna o valor que foi atribuído ao nome do atributo dado.
Retorna um evento que dispara quando o atributo dado muda.
Retorna um dicionário dos atributos da instância.
Retorna um array que contém todos os filhos da instância.
Retorna uma string codificada do ID de depuração usado internamente pelo Roblox.
Retorna um array que contém todos os descendentes da instância.
Retorna uma string que descreve a ancestralidade da instância.
Retorna o valor estilizado ou explicitamente modificado da propriedade especificada, ou o valor padrão da propriedade se não tiver sido estilizado/modificado.
Obtém um array de todas as tags aplicadas à instância.
Verifique se a instância tem uma tag dada.
Retorna verdadeiro se um Instance for um ancestral do descrente dado.
Retorna true se um Instance for descendente do ancestral dado.
Retorna true se o valor armazenado na propriedade especificada for igual ao padrão instanciado por código.
Remove uma tag da instância.
Redefine uma propriedade para o seu valor padrão.
Define o atributo com o nome dado para o valor dado.
Retorna o filho do Instance com o nome dado. Se o filho não existir, ele produzirá o subprocesso atual até que ele o faça.
Eventos
Incêndios quando a propriedade Instance.Parent do objeto ou uma de suas ancestrais é alterada.
Incêndios sempre que um atributo é alterado no Instance.
Incêndios após um objeto ser associado a este Instance .
Incêndios após uma criança ser removida deste Instance .
Incêndios após um descendente for adicionado ao Instance.
Incêndios imediatamente antes de um descendente do Instance ser removido.
Incêndios imediatamente antes (ou são adiados até depois) que a instância seja destruída via Instance:Destroy() .
Incêndios sempre que qualquer propriedade de estilo for alterada na instância, incluindo quando uma propriedade é definida como nil .
Propriedades
Archivable
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()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
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
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.Baseplatelocal 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
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
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
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
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
Devolução
ClearAllChildren
Essa função destrói todos os filhos e descendentes de uma instância.
local part = Instance.new("Part")-- Add some sparklesfor i = 1, 3 dolocal sparkles = Instance.new("Sparkles")sparkles.Parent = partlocal sc = Instance.new("Sparkles")sc.Parent = sparklesendprint("Children:", #part:GetChildren()) --> Children: 3part: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() doif descendant:IsA("BasePart") thendescendant:Destroy()endend
Devolução
Clone
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().
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 = niltask.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.
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
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
O Instance.Name a ser procurado.
Devolução
FindFirstAncestorOfClass
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
O Object.ClassName a ser procurado.
Devolução
FindFirstAncestorWhichIsA
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")) --> trueprint(part:IsA("BasePart")) --> trueprint(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
O Object.ClassName a ser procurado.
Devolução
FindFirstChild
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 trabalhoWorkspace.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 thenpart.Transparency = 0.5end
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 = partlocal c1 = part.Color -- Propriedadelocal 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
O Instance.Name a ser pesquisado.
Se a pesquisa deve ser conduzida recursivamente ou não.
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".
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
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
O Object.ClassName a ser procurado.
Devolução
Amostras de código
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
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")) --> verdadeiroprint(part:IsA("BasePart")) --> verdadeiroprint(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
O Object.ClassName a ser pesquisado.
Se a pesquisa deve ser conduzida recursivamente ou não.
Devolução
FindFirstDescendant
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
O Instance.Name para procurar.
Devolução
GetActor
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
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.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Veja também
- Instance:SetAttribute() que define o atributo com o nome dado para o valor dado.
- Instance:GetAttributes() que retorna um dicionário de pares de chave-valor para cada atributo da instância.
Parâmetros
O nome do atributo a ser recuperado.
Devolução
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
O nome do atributo especificado para o qual o sinal de alteração está sendo retornado.
Devolução
Um evento que dispara quando o atributo dado muda.
GetAttributes
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.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(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
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éricolocal children = Workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
local Workspace = game:GetService("Workspace")-- Exemplo genérico de for-looplocal children = Workspace:GetChildren()for i, child in children doprint(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
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.
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
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
O comprimento do escopo.
Devolução
A string de ID de depuração.
Amostras de código
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
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.
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
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
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.
-- 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.
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
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.LocalPlayerlocal playerGui = player.PlayerGuilocal HUDContainer = playerGui:WaitForChild("HUDContainer")local coreSheet = ReplicatedStorage:FindFirstChild("CoreSheet")local rule = coreSheet:FindFirstChildWhichIsA("StyleRule")rule.Selector = "TextButton"-- Referência a um botãolocal 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 estilorule: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 explicitamentebutton.Rotation = 45print(button:GetStyled("Rotation")) --> 45 ( valor modificado )print(button.Rotation) --> 45 (modified value)
Parâmetros
Nome da propriedade para consultar.
Devolução
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
Nome da propriedade de estilo para a qual ouvir alterações.
Devolução
Evento que dispara quando a propriedade de estilo dada muda.
GetTags
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
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
Devolução
IsAncestorOf
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
Devolução
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.
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
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
Devolução
Amostras de código
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
Nome da propriedade para consultar.
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
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
Nome da propriedade para redefinir.
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.Partpart: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
- Instance:GetAttribute() que retorna o valor que foi atribuído ao nome do atributo dado.
- Instance:GetAttributes() que retorna um dicionário de pares de chave-valor para cada atributo da instância.
Parâmetros
O nome do atributo sendo definido.
O valor para definir o atributo especificado.
Devolução
WaitForChild
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
O Instance.Name a ser procurado.
Um parâmetro de tempo limite opcional.
Devolução
Amostras de código
The following code waits for an instance named "Part" to be added to Workspace.
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
O Instance cujo Instance.Parent foi alterado.
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.
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
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
Amostras de código
This snippet prints the names of objects as they are added to the Workspace:
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
Amostras de código
This snippet prints the names of objects as they are removed from the Workspace:
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
Amostras de código
O seguinte exemplo imprimirá o nome de qualquer objeto que seja adicionado ao Espaço de Trabalho:
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
Amostras de código
The following example prints the name of any descendant as it is being removed from the Workspace:
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.
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.
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)