Instance

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
No explorable

Instance es la clase base para todas las clases en la jerarquía de clases de Roblox que pueden formar parte del árbol DataModel.

No es posible crear directamente objetos raíz Instance , pero el constructor especial Instance.new() crea objetos a través de código, tomando el nombre de la clase como parámetro y devolviendo el objeto creado.

Resumen

Propiedades

  • Leer paralelo

    Determina si un Instance y sus descendientes pueden ser clonados usando Instance:Clone() , y se pueden guardar / publicar.

  • Capabilities:SecurityCapabilities
    Leer paralelo

    El conjunto de capacidades permitidas para ser utilizadas para scripts dentro de este contenedor.

  • Leer paralelo

    Un identificador no único del Instance.

  • No replicado
    Leer paralelo

    Determina el padre jerárquico del Instance .

  • Oculto
    Seguridad del plugin
    Leer paralelo
    Obsoleto

    Una propiedad obsoleta que solía proteger CoreGui objetos.

  • No replicado
    Leer paralelo

    Convierte la instancia en un contenedor de arena.

  • UniqueId:UniqueId
    No replicado
    No programable
    Seguridad de Roblox
    Leer paralelo

    Un identificador único para la instancia.

Métodos

Eventos

Propiedades

Archivable

Leer paralelo

Esta propiedad determina si la instancia debe incluirse cuando se publique o guarde la experiencia, o cuando se llame a Clone() en uno de los ancestros de la instancia.Llamar directamente a una instancia devolverá si esa instancia no es no .

Copiar un objeto en Studio usando las opciones Duplicar o Copiar / Pegar ignorará su propiedad y establecerá para la copia.


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

Capabilities

SecurityCapabilities
Leer paralelo

El conjunto de capacidades permitidas para ser utilizadas para scripts dentro de esta instancia.Para que las capacidades entren en vigencia, la propiedad Instance.Sandboxed debe estar habilitada.

Esta propiedad es utilizada por una funciónexperimental. Vea capacidades de script para más detalles.

Name

Leer paralelo

Un identificador no único del Instance.Los nombres se utilizan para mantener la jerarquía del objeto organizada, junto con permitir que los scripts accedan a objetos específicos.El nombre de una instancia no puede exceder 100 caracteres en tamaño.

El nombre de un objeto a menudo se usa para acceder al objeto a través de la jerarquía del modelo de datos usando los siguientes métodos:


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

Para hacer un objeto accesible usando el operador punto ( . ), su nombre debe comenzar con una barra oblicua o letra, y el resto del nombre solo puede contener letras, números o guiones (sin otros caracteres especiales).Si el nombre de un objeto no sigue esta sintaxis, no será accesible usando el operador punto y Luau no interpretará su nombre como identificador.

Si más de un objeto con el mismo nombre son hermanos, cualquier intento de indexar un objeto por ese nombre devolverá solo uno de los objetos, similar a Instance:FindFirstChild() , pero no siempre el objeto deseado.Si un objeto específico debe ser accedido a través de código, se recomienda darle un nombre único o garantizar que ninguno de sus hermanos comparta el mismo nombre.

Vea también Instance:GetFullName() para obtener un nombre completo que incluya la jerarquía del objeto.

Parent

No replicado
Leer paralelo

La propiedad Parent determina el padre jerárquico del Instance.La siguiente terminología se usa comúnmente al hablar de cómo se estableceresta propiedad:

  • Un objeto es un hijo de, o es padre de, otro objeto cuando su Parent está establecido a ese objeto.

  • Los descendientes de un Instance son los hijos de ese objeto, más los descendientes de los hijos también.

  • Los ancestros de un Instance son todos los objetos de los que la instancia es descendiente.

Es de la propiedad Parent de la que muchos otros miembros de la API obtienen su nombre, como GetChildren() y FindFirstChild().Esta propiedad también se usa para administrar si un objeto existe en la experiencia o debe ser eliminado.Mientras el padre de un objeto esté en el DataModel, se almacena en una variable o se hace referencia a la propiedad de otro objeto, el objeto permanece en la experiencia; de lo contrario, el objeto se eliminará automáticamente.

Llamar establecerá el de un y todos sus descendientes a , y también bloqueará la propiedad >.Se levanta un error al establecer el Parent de un objeto destruido.

Los objetos recién creados que usan Instance.new() no tendrán un padre y, por lo general, no serán visibles o funcionales hasta que se estableceruno.

Replicación de objetos

Un objeto creado por el servidor no se replicará a los clientes hasta que se vincule a algún objeto que se replica.Cuando se crea un objeto y se configuran muchas propiedades, se recomienda establecer la propiedad última de .Esto garantiza que el objeto se replica una vez, en lugar de replicar muchos cambios de propiedad.


local Workspace = game:GetService("Workspace")
-- Establecer el padre de la nueva instancia último (recomendado)
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = Workspace

Sin embargo, si se asignan partes a un Model cuyo padre aún no se ha establecido, asignar cada parte a ese modelo es aceptable ya que el modelo no se habría replicado.

RobloxLocked

Oculto
Seguridad del plugin
Leer paralelo

Esta propiedad solía proteger los objetos en el servicio CoreGui de ser modificados por usuarios de manera no autorizada.Se ha obsoleto y no hace nada.

Sandboxed

No replicado
Leer paralelo

Convierte la instancia en un contenedor encapsulado , una característica experimental que limita las acciones que los scripts dentro de un contenedor particular pueden realizar.Vea capacidades de script para más detalles.

UniqueId

UniqueId
No replicado
No programable
Seguridad de Roblox
Leer paralelo

Un identificador único para la instancia, distinto de Instance.Name que no es necesariamente único.

Métodos

AddTag

()

Este método aplica una etiqueta a la instancia, sin efecto si la etiqueta ya se aplica.Añadir con éxito una etiqueta disparará una señal creada por CollectionService:GetInstanceAddedSignal() con la etiqueta dada.

Advertencias
  • Las etiquetas de una instancia que se agregaron en el lado del cliente se eliminarán si el servidor luego agrega o elimina una etiqueta en esa instancia porque el servidor replica todas las etiquetas juntas y reemplaza etiquetas anteriores.

  • Cuando se etiqueta una instancia, es común que se utilicen algunos recursos para darle al etiqueta su funcionalidad, por ejemplo conexiones de eventos o tablas.Para evitar fugas de memoria, es una buena idea limpiarlas (desconectarse, establecer en nil , etc.) cuando ya no se necesitan para una etiqueta.Haz esto al llamar Instance:RemoveTag() , llamar Instance:Destroy() o en una función conectada a una señal devuelta por CollectionService:GetInstanceRemovedSignal() .

Parámetros

tag: string
Valor predeterminado: ""

Devuelve

()

ClearAllChildren

()

Esta función destruye todos los hijos y descendientes de una instancia.

Si no desea destruir todos los hijos e hijos, use Instance:GetChildren() o Instance:GetDescendants() para recorrer esos hijos/descendientes y seleccionar qué destruir.Por ejemplo, el siguiente ejemplo de código destruirá todos los BaseParts descendientes de un 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

Devuelve

()

Muestras de código

This example creates a Part and adds a few sparkle objects to the part. Then it calls Part:ClearAllChildren() to remove all of the children.

Instance:ClearAllChildren

local part = Instance.new("Part")
-- add some sparkles
for _ = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
end
print("Part has", #part:GetChildren(), "children")
--> Part has 3 children
part:ClearAllChildren()
print("Part has", #part:GetChildren(), "children")
--> Part has 0 children

Clone() crea una copia de una instancia y todos sus descendientes, ignorando todas las instancias que no sean Archivable.Se devuelve una copia de la instancia raíz por este método y su Parent se establece en nil .Tenga en cuenta que si la instancia misma tiene Archivable establecido a false , esta función devolverá nil .

Si una propiedad de referencia como ObjectValue.Value se establece en una instancia clonada, el valor de la propiedad de la copia depende del valor de la propiedad original:

  • Si una propiedad de referencia se refiere a una instancia que también fue clonada , la copia se referirá a la copia.
  • Si una propiedad de referencia se refiere a un objeto que no fue clonado , el mismo valor se mantiene en la copia.

Devuelve

Muestras 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

()

Establece la propiedad Instance.Parent a nil, bloquea la propiedad Instance.Parent y desconecta todas las conexiones, y llama Destroy() a todos los hijos.Esta función es la manera correcta de deshacerse de objetos que ya no son necesarios.

Deshacerse de objetos no necesarios es importante, ya que los objetos y conexiones innecesarios en un lugar agotan la memoria que puede conducir a problemas de rendimiento serios con el tiempo.

Como mejor práctica después de llamar Destroy() a un objeto, establece cualquier variable que haga referencia al objeto (o sus descendientes) a nil.Esto impide que tu código acceda a cualquier cosa que tenga que ver con el objeto.


local part = Instance.new("Part")
part.Name = "Hello, world"
part:Destroy()
-- No haga esto:
print(part.Name) --> "Hola, mundo"
-- Haz esto para evitar que la línea anterior funcione:
part = nil

Una vez que un Instance se ha destruido por este método, no se puede volver a usar porque la propiedad Instance.Parent está bloqueada.Para temporalmente eliminar un objeto en lugar de destruirlo, establece Parent a nil .Por ejemplo:


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

Para destruir un objeto después de una cantidad determinada de tiempo, usa Debris:AddItem() .


Devuelve

()

Muestras 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

Escribir paralelo

Devuelve al primer ancestro del Instance cuyo Instance.Name es igual al nombre dado.

Esta función trabaja hacia arriba, lo que significa que comienza en el inmediato Instance.Parent de la instancia y trabaja hacia el DataModel .Si no se encuentra un ancestro coincidente, devuelve nil .

El siguiente fragmento de código encontraría al primer ancestro del objeto llamado Car .


local car = object:FindFirstAncestor("Car")

Para las variantes de esta función que encuentran ancestros de una clase específica, consulte Instance:FindFirstAncestorOfClass() y Instance:FindFirstAncestorWhichIsA() .

Parámetros

name: string

El Instance.Name que hay que buscar.

Valor predeterminado: ""

Devuelve

El Instance encontrado.

FindFirstAncestorOfClass

Escribir paralelo

Devuelve al primer ancestro del Instance cuyo Object.ClassName es igual a la clase dada.

Esta función trabaja hacia arriba, lo que significa que comienza en el inmediato Instance.Parent de la instancia y trabaja hacia el DataModel .Si no se encuentra un ancestro coincidente, devuelve nil .

Un uso común de esta función es encontrar el Model a BasePart pertenece. Por ejemplo:


local model = part:FindFirstAncestorOfClass("Model")

Esta función es una variante de Instance:FindFirstAncestor() que comprueba la propiedad Object.ClassName en lugar de Instance.Name.Instance:FindFirstAncestorWhichIsA() también existe, usando el método Object:IsA() en lugar de respetar la herencia de clase.

Parámetros

className: string

El Object.ClassName que hay que buscar.

Valor predeterminado: ""

Devuelve

El Instance encontrado.

FindFirstAncestorWhichIsA

Escribir paralelo

Devuelve al primer ancestro del Instance para el que Object:IsA() devuelve verdadero para la clase dada.

Esta función trabaja hacia arriba, lo que significa que comienza en el inmediato Instance.Parent de la instancia y trabaja hacia el DataModel .Si no se encuentra un ancestro coincidente, devuelve nil .

A diferencia de Instance:FindFirstAncestorOfClass(), esta función usa Object:IsA() que respeta la herencia de clase. Por ejemplo:


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

Por lo tanto, el siguiente ejemplo de código devolverá al primer antecesorBasePart , independientemente de si es un WedgePart , MeshPart o Part.


local part = object:FindFirstAncestorWhichIsA("BasePart")

Vea también Instance:FindFirstAncestor() .

Parámetros

className: string

El Object.ClassName que hay que buscar.

Valor predeterminado: ""

Devuelve

El Instance encontrado.

FindFirstChild

Escribir paralelo

Devuelve el primer hijo del Instance con el nombre dado, o nil si no existe tal hijo.Si el argumento opcional recursive es true, esta función busca todos los descendientes en lugar de solo los hijos inmediatos del Instance.

Comprobación de la existencia de un objeto

FindFirstChild() es necesario si necesitas verificar que un objeto exista antes de continuar.Intentar indexar a un hijo por su nombre usando el operador punto arroja un error si el hijo no existe.


local Workspace = game:GetService("Workspace")
-- Los siguientes errores de línea ocurren si la parte no existe en el espacio de trabajo
Workspace.Part.Transparency = 0.5

Usa FindFirstChild() para comprobar primero Part , luego usa una declaración if para ejecutar código que lo necesita.


local Workspace = game:GetService("Workspace")
local part = Workspace:FindFirstChild("Part")
if part then
part.Transparency = 0.5
end
Encontrar un niño cuyo nombre coincida con una propiedad

A veces el Name de un objeto es igual al de una propiedad de su Parent .Al usar el operador de punto, las propiedades tienen prioridad sobre los hijos si comparten un nombre.

En el siguiente ejemplo, un Folder llamado "Color" se agrega a un Part , que también tiene la propiedad Part.Color. Part.Color se refiere al Color3, no al directorio.


local part = Instance.new("Part")
local folder = Instance.new("Folder")
folder.Name = "Color"
folder.Parent = part
local c = part.Color --> Un Color3
local c2 = part:FindFirstChild("Color") --> The Folder

Una ventaja de usar FindFirstChild() de esta manera es que la introducción de nuevas propiedades no impone un riesgo en tu código.

Notas de rendimiento

FindFirstChild() toma aproximadamente un 20% más de tiempo que usar el operador de punto y casi 8 veces más tiempo que simplemente almacenar una referencia a un objeto.Por lo tanto, debe evitar llamarlo en código dependiente del rendimiento, como en bucles estrechos o funciones conectadas a RunService.Heartbeat y RunService.PreRender .En cambio, almacene el resultado en una variable, o considere usar ChildAdded o WaitForChild() para detectar cuando un hijo de un nombre dado se vuelve disponible.

Parámetros

name: string

El Instance.Name para buscar.

Valor predeterminado: ""
recursive: boolean

Si debe o no llevarse a cabo la búsqueda recursivamente.

Valor predeterminado: false

Devuelve

El Instance encontrado.

Muestras de código

The below would look in Workspace for an object name "Brick". If found, it will change the name of the object to "Foo".

Instance:FindFirstChild

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

FindFirstChildOfClass

Escribir paralelo

Devuelve el primer hijo del Instance cuyo ClassName es igual al dado className .A diferencia de Instance:FindFirstChildWhichIsA(), esta función solo devuelve objetos cuya clase coincida con className, ignorando la herencia de clases.Si no se encuentra un niño coincidente, esta función devuelve nil .

Parámetros

className: string

El Object.ClassName que hay que buscar.

Valor predeterminado: ""

Devuelve

El Instance encontrado.

Muestras 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

Escribir paralelo

Devuelve el primer hijo del Instance para quien Object:IsA() devuelve verdadero para la clase dada.

Si no se encuentra un niño coincidente, esta función devuelve nil .Si el argumento recursivo opcional es verdadero, esta función busca todos los descendientes en lugar de solo los hijos inmediatos del Instance .

A diferencia de Instance:FindFirstChildOfClass(), esta función usa Object:IsA() que respeta la herencia de clase. Por ejemplo:


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

Por lo tanto, el siguiente ejemplo de código devolverá el primer BasePart hijo, independientemente de si es un WedgePart , MeshPart o Part .


local part = object:FindFirstChildWhichIsA("BasePart")

Los desarrolladores que buscan un niño por nombre deberían usar Instance:FindFirstChild() en su lugar.

Parámetros

className: string

El Object.ClassName para buscar.

Valor predeterminado: ""
recursive: boolean

Si debe o no llevarse a cabo la búsqueda recursivamente.

Valor predeterminado: false

Devuelve

El Instance encontrado.

FindFirstDescendant

Escribir paralelo

Devuelve al primer descendiente encontrado con el dado Instance.Name .

Este método está deshabilitado y no se puede usar.Para encontrar el primer descendiente de una instancia, considere usar el parámetro recursive en Instance:FindFirstChild() en lugar.

Parámetros

name: string

El Instance.Name para buscar.

Valor predeterminado: ""

Devuelve

El Instance encontrado.

GetActor

Escribir paralelo

Si el Instance es un Actor , se devuelve el Actor mismo.De lo contrario, se devuelve su ancestro más cercano Actor .Si ningún ancestro es un Actor , el resultado es nil .


Devuelve

El Actor encontrado.

GetAttribute

Variant
Escribir paralelo

Este método devuelve el valor que se ha asignado al nombre del atributo dado. Si no se ha asignado ningún atributo, se devuelve nil.

Por ejemplo, el siguiente fragmento de código establece y luego obtiene el valor del atributo InitialPosition de la instancia:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)
Ver también

Parámetros

attribute: string

El nombre del atributo que se está recuperando.

Valor predeterminado: ""

Devuelve

Variant

El valor que se ha asignado al nombre del atributo dado. Si no se ha asignado ningún atributo, se devuelve nil.

GetAttributeChangedSignal

Esta función devuelve un evento que se comporta exactamente como el evento Changed , excepto que solo se activa cuando cambia el atributo específico; efectivamente es similar a GetPropertyChangedSignal() pero para atributos.

En general, es una buena idea usar este método en lugar de una conexión a Changed con una función que verifica el nombre del atributo.Llamadas posteriores a este método en el mismo objeto con el mismo nombre de atributo devuelven el mismo evento.

El siguiente ejemplo de código devuelve una señal que activa la función attributeChanged() cuando cambia el atributo InitialPosition de la parte:


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)

Vea también Instance.AttributeChanged que se activa cada vez que se cambia cualquier atributo en la instancia.

Parámetros

attribute: string

El nombre del atributo especificado para el cual se devuelve la señal de cambio.

Valor predeterminado: ""

Devuelve

Un evento que se activa cuando cambia el atributo dado.

GetAttributes

Escribir paralelo

Este método devuelve un diccionario de pares clave-valor para cada atributo donde la clave es el nombre del atributo y el valor es un valor no nil no.

Por ejemplo, el siguiente fragmento de código produce los atributos y valores de una instancia:


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

Vea también Instance:GetAttribute() que devuelve el valor que se ha asignado al nombre del atributo dado.


Devuelve

Un diccionario de pares de cuerda → nombre de atributo para cada atributo donde la cuerda es el nombre del atributo y el variante es un valor no nulo.

GetChildren

Instances
Escribir paralelo

Devuelve un array (una tabla indexada numéricamente) que contiene todos los hijos directos de la instancia, o cada Instance cuyo Parent es igual al objeto.El array se puede iterar al usar un bucle for numérico o genérico:


local Workspace = game:GetService("Workspace")
-- Ejemplo de bucle 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")
-- Ejemplo genérico de bucle while
local children = Workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

Los niños se ordenan por el orden en que su propiedad Parent se estableció al objeto.

Vea también la función GetDescendants .


Devuelve

Instances

Un array que contiene los hijos de la instancia.

Muestras 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

No explorable
Seguridad del plugin

Devuelve una cadena codificada del ID de depuración utilizado internamente por Roblox. Tenga en cuenta que:

  • Este artículo está protegido. Intentar usarlo en un Script o LocalScript causará un error.
  • Un ID de depuración es un ID utilizado en procesos de depuración.Permite que un depurador lea cada instrucción antes de que una aplicación la procese.Todos los objetos en Roblox actúan como procesos y cada instrucción de ejecución (o 'código') que se puede depurar si es necesario.
  • Esto puede ser útil para los plugins que necesitan distinguir objetos similares entre sí (como objetos que comparten el mismo nombre).

Parámetros

scopeLength: number

La longitud del alcance.

Valor predeterminado: 4

Devuelve

La cadena de identificación de depuración.

Muestras de código

Instance:GetDebugId

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

GetDescendants

Escribir paralelo

Este método de objeto devuelve un array que contiene todos los descendientes de ese objeto.A diferencia de Instance:GetChildren(), que solo devuelve los hijos inmediatos de un objeto, este método encuentra a todos los hijos del objeto, a todos los hijos de esos hijos, y así sucesivamente.


Devuelve

Un array que contiene los descendientes de la instancia.

Muestras 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

Escribir paralelo

Devuelve una cadena que describe el ancestro de la instancia.La cadena es una concatenación del Name del objeto y sus ancestros, separados por períodos.El DataModel ( game ) no se considera.Por ejemplo, un Part en el Workspace puede devolver Workspace.Part .

Cuando se llama a un Instance que no es un descendiente del DataModel , esta función considera todos los ancestros hasta y, incluido el superior, sin un Parent .

Esta función es útil para registrar y depurar.No deberías intentar analizar la cadena devuelta para ninguna operación útil; esta función no escapa períodos (o cualquier otro símbolo) en los nombres de objetos.En otras palabras, aunque su salida a menudo parece ser un identificador válido de Luau, no está garantizada.


Devuelve

El nombre completo del Instance .

Muestras 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

Parámetros

name: string
Valor predeterminado: ""

Devuelve

Variant

GetStyledPropertyChangedSignal

Parámetros

property: string
Valor predeterminado: ""

Devuelve

GetTags

Escribir paralelo

Este método devuelve un array de las etiquetas aplicadas a la instancia dada, como cadenas.Puedes agregar etiquetas en Studio en la ventana Propiedades o en tiempo de ejecución con AddTag().

Este método es útil cuando quieres hacer algo con varias etiquetas en una instancia a la vez.Sin embargo, es ineficiente usar este método para verificar la existencia de una etiqueta única; en cambio, use HasTag() para verificar una etiqueta específica.


Devuelve

HasTag

Escribir paralelo

Este método devuelve true si la etiqueta proporcionada se ha agregado al objeto.Puedes agregar etiquetas en Studio en la ventana Propiedades o en tiempo de ejecución con AddTag().

Parámetros

tag: string
Valor predeterminado: ""

Devuelve

IsAncestorOf

Escribir paralelo

Devuelve verdadero si un Instance es un ancestro del descendiente dado.

Un Instance se considera el ancestro de un objeto si el Instance.Parent o uno de los padres del objeto Instance.Parent se establece en el Instance.

Vea también, Instance:IsDescendantOf() .

Parámetros

descendant: Instance

El descendiente Instance .

Valor predeterminado: ""

Devuelve

Verdadero si el Instance es un ancestro del descendiente dado.

Muestras 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

Escribir paralelo

Devuelve true si un Instance es un descendiente del antecesordado.

Tenga en cuenta que IsDescendantOf() no se puede usar con un parámetro de nil para verificar si un objeto se ha eliminado.

Vea también Instance:IsAncestorOf() .

Parámetros

ancestor: Instance

El ancestro Instance .

Valor predeterminado: ""

Devuelve

Verdadero si el Instance es un descendiente del antecesordado.

Muestras de código

Instance:IsDescendantOf

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

IsPropertyModified

Devuelve true si el valor almacenado en la propiedad especificada no es predeterminado.Por ejemplo, si se imprime la propiedad Rotation de un TextLabel que indica 0 , entonces llamar IsPropertyModified("Rotation") a la etiqueta devolverá false porque 0 es el valor predeterminado para TextLabel.Rotation .

Parámetros

property: string
Valor predeterminado: ""

Devuelve

Booleano que indica si la propiedad se modifica.

RemoveTag

()

Este método elimina una etiqueta de una instancia.No lanzará un error si el objeto no tiene la etiqueta.La eliminación exitosa de una etiqueta disparará una señal creada por CollectionService:GetInstanceRemovedSignal() con la etiqueta dada.

Tenga en cuenta que cuando se etiqueta una instancia, es común que se utilicen algunos recursos para darle al etiqueta su funcionalidad, por ejemplo conexiones de eventos o tablas.Para evitar fugas de memoria, es una buena idea limpiarlas (desconectarse, establecer en nil , etc.) cuando ya no se necesitan para una etiqueta.

Parámetros

tag: string
Valor predeterminado: ""

Devuelve

()

ResetPropertyToDefault

()

Restablece una propiedad a su valor predeterminado.Por ejemplo, llamar ResetPropertyToDefault("Rotation") en un TextLabel es equivalente a establecer su Rotation a 0 (el valor predeterminado de la propiedad).

Parámetros

property: string
Valor predeterminado: ""

Devuelve

()

SetAttribute

()

Este método establece el atributo con el nombre dado al valor dado.Si el valor dado es nil , el atributo se eliminará, ya que nil se devuelve por defecto.

Por ejemplo, el siguiente fragmento de código establece el atributo InitialPosition de la instancia a Vector3.new(0, 10, 0) :


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Limitaciones

Requisitos y restricciones de nomenclatura:

  • Los nombres solo deben usar caracteres alfanuméricos y guiones.
  • No se permiten espacios o símbolos únicos.
  • Las cadenas deben tener 100 caracteres o menos.
  • Los nombres no se permiten comenzar con RBX a menos que el llamador sea un script de núcleo de Roblox (reservado para Roblox).

Cuando se intenta establecer un atributo a un introducirno admitido, se lanzará un error.

Ver también

Parámetros

attribute: string

El nombre del atributo que se está establecer.

Valor predeterminado: ""
value: Variant

El valor para establecer el atributo especificado a.

Valor predeterminado: ""

Devuelve

()

WaitForChild

Puede proporcionar

Devuelve el hijo del Instance con el nombre dado.Si el niño no existe, producirá el hilo actual hasta que lo haga.Si se especifica el parámetro timeOut, este método expirará después del número especificado de segundos y devolverá nil.

Uso principal

WaitForChild() es extremadamente importante al trabajar en código ejecutado por el cliente en un LocalScript .El motor de Roblox no garantiza el tiempo o el orden en que se replican los objetos desde el servidor al cliente.Además, si una experiencia tiene Workspace.StreamingEnabled configurada como verdadera, BaseParts que están lejos del personaje del jugador pueden no ser transmitidas al cliente, lo que podría causar que los scripts se rompan al indexar objetos que aún no existen en el cliente.

Notas
  • Esta función no devuelve si existe un niño con el nombre dado cuando se realiza la llamada.
  • Instance:FindFirstChild() es una alternativa más eficiente a WaitForChild() para objetos que se supone que existen.
  • Si una llamada a este método supera los 5 segundos sin devolver, y no se ha especificado ningún parámetro timeOut, se imprimirá una advertencia en la salida que el hilo pueda generar indefinidamente.

Parámetros

childName: string

El Instance.Name que hay que buscar.

Valor predeterminado: ""
timeOut: number

Un parámetro de tiempo de espera opcional.

Valor predeterminado: ""

Devuelve

El Instance encontrado.

Muestras 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

Se incendia cuando la propiedad Instance.Parent de la objeto o una de sus ancestros cambia.

Este evento incluye dos parámetros: child se refiere al Instance cuyo Instance.Parent realmente se cambió, mientras que parent se refiere al nuevo Instance.Parent de esta instancia.

Puedes usar este evento para rastrear la eliminación de una instancia en Studio, como la eliminación manual en el Explorador o a través de un complemento.Si necesita detectar cuando se destruye una instancia usando Instance:Destroy() , use el evento Instance.Destroying en su lugar.

Parámetros

child: Instance

El Instance cuyo Instance.Parent ha sido cambiado.

parent: Instance

El nuevo Instance.Parent de la Instance cuyo Instance.Parent se cambió.


Muestras 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 se activa cada vez que se cambia cualquier atributo en la instancia, incluido cuando un atributo se establece en nil.El nombre del atributo cambiado se pasa a la función conectada.

Por ejemplo, el siguiente fragmento de código conecta la función attributeChanged() a disparar cada vez que cambia uno de los atributos de la parte:


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

Vea también Instance:GetAttributeChangedSignal() que devuelve un evento que se activa cuando un atributo específico cambia.

Parámetros

attribute: string

El nombre del atributo que se ha cambiado.


ChildAdded

Se produce fuegos después de que un objeto sea padre de este Instance .

Tenga en cuenta, al usar esta función en un cliente para detectar objetos creados por el servidor, es necesario usar Instance:WaitForChild() al indexar los descendientes de estos objetos.Esto se debe a que el objeto y sus descendientes no se garantizan de replicarse simultáneamente desde el servidor al cliente.Por ejemplo:


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)

Nota, esta función solo funciona para los hijos inmediatos del Instance . Para una función que captura todos los descendientes, use Instance.DescendantAdded .

Vea también Instance.ChildRemoved .

Parámetros

child: Instance

El Instance que se ha agregado.


Muestras 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

Se produce fuegos después de que se elimine a un niño de este Instance .

Removed se refiere a cuando el padre de un objeto se cambia de este Instance a algo diferente a esto Instance .Nota, este evento también se disparará cuando se destruya un niño (usando Instance:Destroy() ) ya que la función de destrucción establece al padre de un objeto en nil .

Esta función solo funciona para los hijos inmediatos del Instance . Para una función que capture a todos los descendientes, use Instance.DescendantRemoving .

Vea también Instance.ChildAdded .

Parámetros

child: Instance

El Instance que se ha eliminado.


Muestras 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 se activa después de que se agregue un descendiente a la Instance.

Al disparar por cada descendiente, hacer padre de un objeto al Instance disparará el evento para este objeto y todos sus descendientes individualmente.

Si solo te preocupas por los hijos directos del , usa en su lugar.

Vea también Instance.DescendantRemoving .

Parámetros

descendant: Instance

El Instance que se ha agregado.


Muestras de código

This following example will print the name of any object that is added to the Workspace:

Instance.DescendantAdded

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

DescendantRemoving

Este evento se activa inmediatamente antes de que el padre Instance cambie tal que una instancia descendiente ya no sea descendiente. Destroy() cambia el Parent de una instancia a nil, por lo que llamar ese método a un descendiente del padre hará que se desencadenareste evento.

Dado que este evento dispara antes de la eliminación del descendiente, el padre del descendente se mantendrá sin cambios al momento de disparo de este evento.Si el descendiente es también un niño directo del padre, este evento se disparará antes de Instance.ChildRemoved .

Si un descendiente tiene hijos, este evento se activa con el descendiente primero, seguido de sus descendientes.

Atención/advertencia

Este evento se dispara con el objeto descendente que se está eliminando.Intentar establecer el Parent del descendente a algo más fallará.A continuación se muestra un ejemplo que demuestra esto:


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

Vea también DescendantAdded .

Parámetros

descendant: Instance

El Instance que se está eliminando.


Muestras 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

El Instance nunca se eliminará de la memoria mientras una función conectada aún lo esté utilizando.Sin embargo, si la función se rinde en cualquier punto, los Instance y sus descendientes serán padres de nil .

Si la propiedad Workspace.SignalBehavior se establece en Enum.SignalBehavior.Immediate, este evento se activa inmediatamente antes de que se destruya Instance o uno de sus ancestros con Instance:Destroy() .

Si la propiedad Workspace.SignalBehavior se establece en Enum.SignalBehavior.Deferred, este evento se activa en el siguiente punto de reanudación, que será después de que se destruya el Instance o uno de sus ancestros con Instance:Destroy().

Con el comportamiento Deferred, conectar un script a su propio evento Instance.Destroying es problemático, ya que el script se destruirá antes de que se pueda llamar la llamada de devolución (lo que significa que no se ejecutará).

Al eliminar un Instance en Studio, como eliminar manualmente a través del Explorador o a través de un complemento, el Instance no se destruye.En cambio, el padre se establece en nil que puedes rastrear con Instance.AncestryChanged .


Muestras 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