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

La instancia es la clase base para todas las clases en la hierarcha de clases de Roblox que pueden formar parte del árbol de datos. No es posible crear directamente objetos de instancia.

La instancia tiene una función especial llamada Instance.new() que se usa para crear objetos a través del código. Esta función toma el nombre de la clase como parámetro y devuelve el objeto creado. Las clases y servicios abstractos no se pueden crear con la función instancia.new.

Resumen

Propiedades

  • Leer paralelo

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

  • Capabilities:SecurityCapabilities
    Leer paralelo

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

  • Leer paralelo

    Un identificador no único de la Instance .

  • No replicado
    Leer paralelo

    Determina el padre de la jerarquía del Instance.

  • Oculto
    Leer paralelo
    Obsoleto

    Una propiedad obsoleta que solía proteger CoreGui .

  • No replicado
    Leer paralelo

    Convierte la instancia en un contenedor de prueba de arena.

  • UniqueId:UniqueId
    No replicado
    No programable
    Leer paralelo

Métodos

Eventos

Propiedades

Archivable

Leer paralelo

Esta propiedad determina si la instancia debe incluirse cuando se publica o guarda la experiencia, o cuando se llama a Clone() en uno de los ancestros de la instancia. Al llamar Clone() directamente en una instancia, se devolverá nil si esa instancia no es

Copiar un objeto en Studio usando las opciones <a href="https://developer.microsoft.com/en-us/microsoft-edge/Copy-object">Duplicate\ o <a href="https://developer.microsoft.com/en-us/microsoft-edge/Copy-object">Copy\ / <a href="https://developer.microsoft.com/en-us/microsoft-edge/Paste\ para la copia.


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

Capabilities

SecurityCapabilities
Leer paralelo
Seguridad de scripts Roblox

El conjunto de capacidades permitidas para ser usadas para scripts dentro de esta instancia. Para que las capacidades tengan efecto, Instance.Sandboxed propiedad debe estar habilitada.

Esta propiedad se usa por una funciónexperimental. Vea la página Capacidades de Script para más detalles.

Name

Leer paralelo

Un identificador no único de la Instance .

Esta propiedad es un identificador que describe un objeto. Los nombres no son necesariamente identificadores únicos, sin embargo; múltiples hijos de un objeto pueden compartir el mismo nombre. Los nombres se utilizan para organizar la jerarquía del objeto, 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 de modelo de datos usando los siguientes métodos:


local baseplate = workspace.Baseplate
local baseplate = workspace["Baseplate"]
local baseplate = workspace:FindFirstChild("BasePlate")

Para hacer un objeto accesible usando el operador de punto, el nombre de un objeto debe seguir una determinada sintaxis. El nombre del objeto debe comenzar con un signo de exclamación o letra. El resto del nombre sólo puede contener letras, números o signos de subrayado (sin otros caracteres especiales). Si el nombre del objeto no sigue esta sintaxis, no se podrá acceder a él usando el operador de punto y Lua no lo interpretará como un identificador.

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

Nota, se puede obtener un nombre completo que muestra la jerarquía de la instancia usando Instance:GetFullName() .

Parent

No replicado
Leer paralelo

La propiedad Padre determina el padre de la cadena de mando del Instance . La siguiente terminología se usa comúnmente cuando se habla de cómo se estableceresta propiedad:

  • Un objeto es un hijo ( a la vez que su padre está configurado para ese objeto.))
  • Los descendientes de un Class.Instance son los hijos de ese objeto, plus los descendientes de los hijos también.
  • Los ancestros de un Class.Instance son todos los objetos de los que es descendiente.

Es de esta propiedad que muchos otros miembros de la API obtienen su nombre, como GetChildren y FindFirstChild .

La función Remove establece esta propiedad a nil. Al llamar a Destroy , se establecerá el padre de un objeto destruido y todos sus descendientes a Instance y también 1>bloquear1> la propiedad padre. Se produce un error cuando se establece el padre de un objeto destruido.

Esta propiedad también se usa para administrar si un objeto existe en el juego o necesita ser eliminado. Mientras un objeto padre está en el DataModel , se almacena en una variable, o se refiere a una propiedad de otro objeto, el objeto permanece en el juego. De lo contrario, el objeto se eliminará autom

Los objetos recién creados que se crean con Instance.new() no tendrán padre, y generalmente no serán visibles o funcionales hasta que se establezca uno. La creación más elemental de un objeto tiene dos pasos: crear el objeto y luego establecer su padre.


-- Create a part and parent it to the workspace
local part = Instance.new("Part")
part.Parent = workspace
-- Instance new can also take Parent as a second parameter
Instance.new("NumberValue", workspace)

Cuando se realiza un cambio en ciertas propiedades mientras se tiene una instancia en el DataModel , el motor puede necesitar realizar trabajo extra internamente (para cosas como la replicación, la renderización y el diseño de GUI). Siempre que sea posible, cambia las propiedades de una instancia antes de que establezcas su padre, en lugar de después, para evitar realizar ese trabajo redundantemente.

Replicación de Objetos

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


local part = Instance.new("Part") -- Evite usar el segundo parámetro aquí
part.Anchored = true
part.BrickColor = BrickColor.new("Really red")
-- Potencialmente muchos cambios de propiedad más podrían ir aquí aquí ...
-- ¡Siempre fijar el padre último!
part.Parent = workspace

Sin embargo, si estabas vinculando tus partes a un Model cuyo padre aún no ha sido establecido, entonces vincular cada parte a ese modelo es correcto, ya que el modelo aún no se habrá replicado.

RobloxLocked

Oculto
Leer paralelo
Seguridad del plugin

Esta propiedad se usaba para proteger objetos en el servicio de CoreGui de ser alterados por usuarios de una manera no autorizada. Ha sido depreciada y no hace nada.

Sandboxed

No replicado
Leer paralelo
Seguridad de scripts Roblox

Convierte la instancia en un contenedor de prueba. Los contenedores de prueba son una característica experimental que limita las acciones que los scripts dentro de un contenedor particular pueden realizar.

Consulte la página Capacidades de Script para obtener más información.

UniqueId

UniqueId
No replicado
No programable
Leer paralelo
Seguridad de Roblox

Métodos

AddTag

void

Este método aplica una etiqueta a la instancia, con ningún efecto si la etiqueta ya está aplicada. Añadir con éxito una etiqueta creará una señal creada por CollectionService:GetInstanceAddedSignal() con la etiqueta proporcionada.

Tenga en cuenta que cuando se etiqueta una instancia, es común que se utilicen algunos recursos para proporcionar la funcionalidad de la etiqueta, por ejemplo, conexiones de eventos o tablas. Para evitar fugas de memoria, es una buena idea limpiar estos (desconectar, establecer a

Parámetros

tag: string

Devuelve

void

ClearAllChildren

void

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

Como Instance:Destroy() también se llama a sí mismo en los hijos de un objeto en el que se usa, esta función destruirá todos los descendientes.

Alternativas para borrar todos los niños

Si el desarrollador no desea destruir todos los descendientes, debería usar Instance:GetChildren() o Instance:GetDescendants() para hacer un bucle a través de un objeto y seleccionar qué destruir. Por ejemplo, el siguiente código de ejemplo destruirá todas las partes en un objeto.


for _, instance in object:GetDescendants() do
if instance:IsA("BasePart") then
instance:Destroy()
end
end

Devuelve

void

Muestras de código

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

Clon crea una copia de una instancia y todos sus descendientes, ignorando todas las instancias que no son Archivable . La copia de la instancia raíz se devuelve por este método y su <

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

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

Devuelve

Muestras de código

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

void

Establece la propiedad Instance.Parent a nulo, bloquea la propiedad Instance.Parent, desconecta todas las conexiones y llama a Destruir en todos los hijos. Esta función es la manera correcta de deshacerse de los objetos que ya no son necesarios. El deshacer de objetos no necesarios es importante, ya que los objetos no necesarios y las conexiones en un lugar consum

Consejo: Después de llamar Destruir en un objeto, establece cualquier variable que se refiera al objeto (o sus descendientes) a nulo. Esto evita que tu código acceda a nada para hacer con el objeto.


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

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


object.Parent = nil
wait(2)
object.Parent = workspace

Para destruir un objeto después de un período de tiempo establecido, usa Debris:AddItem() .


Devuelve

void

Muestras de código

Instance:Destroy()

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

FindFirstAncestor

Escribir paralelo

Devuelve el primer ancestro de la 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 ningún ancestral que coincida,返回 nil。

El siguiente código de ejemplo encontraría el primer ancestro del objeto nombrado 'Car'.


local car = object:FindFirstAncestor("Car")

Para 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 para buscar.


Devuelve

El Instance encontrado.

FindFirstAncestorOfClass

Escribir paralelo

Devuelve el primer ancestro de la Instance cuyo Object.ClassName es igual al nombre de usuario 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 ningún ancestral que coincida,返回 nil。

Un uso común de esta función es encontrar el Model a un BasePart que 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 . 1> Class.Instance:FindFirstAncestorWhichIsA()1> también existe, usando el método 4> Class.Object:IsA()4> en lugar

Parámetros

className: string

El Object.ClassName para buscar.


Devuelve

El Instance encontrado.

FindFirstAncestorWhichIsA

Escribir paralelo

Devuelve el primer ancestro de la Instance para el cual Object:IsA() devuelve cierto para el 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 ningún ancestral que coincida,返回 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 código de ejemplo devolverá el primer antecesorde BasePart , independientemente de si es un WedgePart , MeshPart o 1> Class.Part1> .


local part = object:FindFirstAncestorWhichIsA("BasePart")

También, Instance:FindFirstAncestor() .

Parámetros

className: string

El Object.ClassName para buscar.


Devuelve

El Instance encontrado.

FindFirstChild

Escribir paralelo

Devuelve el primer hijo de la Instance con el nombre dado,

o nil si no existe tal hijo. Si el argumento opcional recursive es cierto, esta función busca todos los descendientes, en lugar de solo los hijos inmediatos de la Instance .

Comprobando la existencia de un objeto

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


-- Las siguientes líneas de error si no existe la parte en el espacio de trabajo:
workspace.Part.Transparency = 0.5

Usa FindFirstChild para primer verificar por Part, luego usa una declaración if para ejecutar el código que necesita.


local part = workspace:FindFirstChild("Part")
if part then
part.Transparency = 0.5
end

Encontrando un niño cuyo nombre coincide con una propiedad

A veces, el Name de un objeto es el mismo que el de una propiedad de su Parent. Cuando se usa el operador de punto, las propiedades tienen la 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. 1>Class.Part.Color1> se refiere al 4>Datatype.Color34>, no al Folder.


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

Un beneficio de usar FindFirstChild() de esta manera es que la introducción de nuevas propiedades no implica riesgo para su código.

Nota de rendimiento

FindFirstChild() tarda un poco más que usar el operador de punto y casi 8 veces más que simplemente almacenar una referencia a un objeto

Parámetros

name: string

El Instance.Name para buscar.

recursive: bool

Si la búsqueda debe o no deberse realizar recursivamente.

Valor predeterminado: false

Devuelve

El Instance encontrado.

Muestras de código

Instance:FindFirstChild

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

FindFirstChildOfClass

Escribir paralelo

Devuelve el primer hijo de la Instance cuyo ClassName es igual al nombre de la clase dado.

Si no se encuentra un hijo que coincida, esta función devuelve nulo.

A diferencia de Instance:FindFirstChildWhichIsA() esta función solo devuelve objetos cuya clase coincida con el nombre dado, ignorando la herencia de clase.

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.


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 de la Instance para quien Object:IsA() devuelve cierto para el nombre dado.

Si no se encuentra ningún hijo que coincida, esta función devuelve nulo. Si el argumento recursivo opcional es cierto, esta función busca todos los descendientes, en lugar de solo los hijos inmediatos de la Instance .

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


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

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


local part = object:FindFirstChildWhichIsA("BasePart")

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

Parámetros

className: string

El Object.ClassName para buscar.

recursive: bool

Si la búsqueda debe o no deberse realizar recursivamente.

Valor predeterminado: false

Devuelve

El Instance encontrado.

FindFirstDescendant

Escribir paralelo

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

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.


Devuelve

El Instance encontrado.

GetActor

Escribir paralelo

Si el Instance es un Actor , el Actor en sí mismo se devuelve. De lo contrario, se devuelve su ancestral más cercano 1>Class.Actor1> . Si ningún ancestral es un 4>Class.Actor4>, el resultado es 7>nil7> .


Devuelve

El Actor encontrado.

GetAttribute

Variant
Escribir paralelo

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

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


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.


Devuelve

Variant

El valor que se ha asignado al nombre de atributo especificado. 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 el atributo especificado cambia; de hecho, es similar a GetPropertyChangedSignal() pero para los atributos.

Generalmente es una buena idea usar este método en lugar de una conexión a Changed con una función que comprueba el nombre del atributo. Las siguientes llamadas a este método en el mismo objeto con el mismo nombre de atributo devuelven el mismo evento.

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


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

También vea Instance.AttributeChanged que se activa siempre que se cambia cualquier atributo en la instancia.

Parámetros

attribute: string

El nombre del atributo especificado para el cual se está devolviendo el mensaje de cambio.


Devuelve

Un evento que se activa cuando cambia el atributo dado.

GetAttributes

Escribir paralelo

Este método返回一个典型的键值对象,为每个属性的钥匙,值为一个非- nil 值。

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


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

También véase Instance:GetAttribute() que devuelve el valor que se ha asignado al atributo nombrado.


Devuelve

Un diccionario de parejas de cadenas para cada atributo donde la cadenas es el nombre del atributo y la vainilla es un valor no nulo.

GetChildren

Instances
Escribir paralelo

Devuelve un arreglo (una tabla de índice numérico) que contiene todos los hijos directos de la instancia, o cada Instance cuyo Parent es igual al objeto. El arreglo se puede repetir al usar cualquier número o genérico para la repetición:


-- 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

-- Ejemplo genérico para-循环
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 se estableció su propiedad Parent al objeto.

También véase la función GetDescendants.


Devuelve

Instances

Un arreglo que contiene los hijos de la instancia.

Muestras de código

Instance:GetChildren

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

GetDebugId

No explorable
Seguridad del plugin

Devuelve un valor de cadena codificado de el ID de diagnóstico usado internamente por Roblox.

Nota:

  • Este artículo está protegido. Intentar usarlo en un Script o LocalScript causará un error
  • Un ID de diagnóstico es un ID usado en los procesos de diagnóstico. Le permite a un debugger leer 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 diagnóstico (o 'código' que se puede debugger si es necesario)
  • Esto puede ser útil para los plugins que necesitan distinguir objetos similares uno de otro (como los objetos que comparten el mismo nombre)

Parámetros

scopeLength: number

La longitud del alcance.

Valor predeterminado: 4

Devuelve

La cadena de ID de diagnóstico.

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 arreglo 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 matrón que contiene los descendientes de la instancia.

Muestras de código

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 origen de la instancia. La cadena es una concatenación de la Name del objeto y sus ancestros, separados por periodos. El DataModel ( game ) no se considera. Por ejemplo, un 1> Class.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 más antiguo sin un Parent .

Esta función es útil para registrar y debugger. 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 los objetos. En otras palabras, a pesar de que su salida a menudo parece ser un identificador de Lua válido, no está garantizado.


Devuelve

El nombre completo del Instance .

Muestras de código

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
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

Devuelve

Variant

GetTags

Escribir paralelo

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

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


Devuelve

HasTag

Escribir paralelo

Este método返回true si se ha añadido la etiqueta proporcionada a la propiedad del objeto. Puedes añadir etiquetas tanto en Studio en la ventana Propiedades como en tiempo de ejecución con AddTag() .

Parámetros

tag: string

Devuelve

IsAncestorOf

Escribir paralelo

Regresa true si un Instance es un ancestro del descendiente dado.

Un Instance es considerado el antepasado de un objeto si su Instance.Parent o uno de sus padres Instance.Parent está configurado como el 2>Class.Instance2> .

También, Instance:IsDescendantOf() .

Parámetros

descendant: Instance

El descendiente Instance .


Devuelve

Cierto si el Instance es un ancestro del descendiente dado.

Muestras de código

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

Regresa true si un Class.Instance es un antecesordel ancestral dado.

Un Instance se considera el descendiente de un objeto si el padre del instanciao uno de los padres del objeto está configurado para el objeto.

Nota, DataModel es un descendiente de nulo. Esto significa que IsDescendantOf no se puede usar con un parámetro de nulo para verificar si se ha eliminado un objeto.

También, Instance:IsAncestorOf() .

Parámetros

ancestor: Instance

El ancestro Instance .


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

RemoveTag

void

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

Tenga en cuenta que al etiquetar una instancia, es común que se utilicen algunos recursos para proporcionar la funcionalidad de la etiqueta, por ejemplo, conexiones de eventos o tablas. Para evitar fugas de memoria, es una buena idea limpiar estos (desconectar, establecer a nil , etc.) cuando no es necesario para una etiqueta.

Parámetros

tag: string

Devuelve

void

SetAttribute

void

Este método establece el atributo con el nombre dado a el valor dado. Si el valor dado es nil , el atributo será eliminado, ya que nil es devuelto por defecto.

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


local part = workspace.Part
part:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))

Limitaciones

Requisitos y limitaciones de nomen:

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

Al intentar asignar un atributo a un introducirno soportado, se producirá un error.

Véase también:

Parámetros

attribute: string

El nombre del atributo que se está establecer.

value: Variant

El valor para establecer el atributo especificado.


Devuelve

void

WaitForChild

Puede proporcionar

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

Uso primario

WaitForChild() es extremadamente importante cuando se trabaja en el código que se ejecuta por el cliente en un LocalScript . El motor de Roblox no garantiza el tiempo o el orden en que

Notas

  • Esta función no se genera si un niño con el nombre dado existe cuando se hace la llamada.
  • Instance:FindFirstChild() es una alternativa más eficiente a WaitForChild() para los objetos que se suponen que existen.
  • Si una llamada a este método supera los 5 segundos sin返回,且 no se ha指定了 timeOut 参数,将打印警告,输出将可能永久生成。

Parámetros

childName: string

El Instance.Name para buscar.

timeOut: number

Un parámetro de tiempo opcional.


Devuelve

El Instance encontrado.

Muestras de código

Instance:WaitForChild

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

Eventos

AncestryChanged

Activa cuando la propiedad Instance.Parent del objeto o uno de sus ancestros cambia.

Este evento incluye dos parámetros, hijo y padre. Hijo se refiere al 2> Class.Instance2> cuyo 5> Class.Instance.Parent5> fue cambiado en realidad. 8> Padre8> se refiere a este instanciade estudio's nuevo 1> Class.Instance.Parent1> .

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 necesitas detectar cuando se destruye una instancia usando Instance:Destroy() , usa el evento Instance.Destroying en su lugar.

Parámetros

child: Instance

El Instance cuyo Instance.Parent ha cambiado.

parent: Instance

El nuevo Instance.Parent de la Instance cuyo Instance.Parent ha cambiado.


Muestras de código

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

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


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

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

Parámetros

attribute: string

El nombre del atributo que se ha cambiado.


ChildAdded

Se activa después de que un objeto esté asociado a este Instance .

Nota, 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 este objeto. Esto se debe a que el objeto y sus descendientes no están garantizados de replicarse del servidor al cliente simultáneamente. Por ejemplo:


workspace.ChildAdded:Connect(function(child)
-- need to use WaitForChild as descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)

Nota, esta función solo funciona para los hijos inmediatos de la Instance . Para una función que captura a todos los descendientes, usa Instance.DescendantAdded .

También, Instance.ChildRemoved .

Parámetros

child: Instance

El Instance que se ha añadido.


Muestras de código

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

Dispara después de que se elimine un niño de este Instance .

Removed se refiere a cuando el padre de un objeto es cambiado de este Instance a algo más que esto Instance . Nota, este evento también se disparará cuando un hijo se destruya (usando Instance:Destroy() ) como la función de destrucción establece el padre de un objeto a cero.

Esta función solo funciona para los hijos inmediatos de la Instance . Para una función que captura a todos los descendientes, usa Instance.DescendantRemoving .

También see Instance.ChildAdded .

Parámetros

child: Instance

El Instance que se ha eliminado.


Muestras de código

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

El evento DescendantAdded se activa después de que se agregue un descendiente a la Instance .

Como descendiente, agrega fuegos para cada descendiente, la asociación de un objeto con el Instance disparará el evento para este objeto y todos sus descendientes individualmente.

Los desarrolladores solo se preocupan por los hijos inmediatos de la Instance deberían usar Instance.ChildAdded en su lugar.

También see Instance.DescendantRemoving .

Parámetros

descendant: Instance

El Instance que se ha añadido.


Muestras de código

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 que el padre Instance cambie para que una instancia desciendente no sea una descendientemás. 1> Class.Instance:Destroy()|Destroy()1> cambia el padre de la instancia 4> Class.Instance.Parent|Parent4>

Dado que este evento se activa antes de la eliminación del descendiente, el padre del descendiente no cambiará en el momento de este evento de eliminación. Si el descendiente también es un hijo directo del padre, este evento se activará antes de Instance.ChildRemoved .

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

Atención/advertencia

Este evento se activa con el objeto de descendencia que se está eliminando. Intentar establecer el Parent del descendiente a algo diferente fallará. A continuación, se muestra un ejemplo que demuestra esto:


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

También véase DescendantAdded .

Parámetros

descendant: Instance

El Instance que se está eliminando.


Muestras de código

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 todavía la está usando. Sin embargo, si la función se elimina en cualquier momento, el Instance y sus descendientes serán padreados a nil .

Si la propiedad Workspace.SignalBehavior está configurada como Enum.SignalBehavior.Immediate, este evento se activa inmediatamente antes de que la propiedad Instance o uno de sus antepasados ​​se destruya con 1> Class.Instance:Destroy()1> .

Si la propiedad Workspace.SignalBehavior está configurada como Enum.SignalBehavior.Deferred, este evento se activa en el siguiente punto de reanudación, que será después de que la Class.Instance o uno de sus ancestros se destruya con Instance .

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 el llamado de retorno (lo que significa que no se ejecutará).

Al eliminar un Instance en Studio, como eliminar manualmente a través de Explorador o a través de un complemento, el Instance no se destruye. En cambio, el padre se establece en 2>nil2> que puedes rastrear con 5>Class.Instance.AncestryChanged5> .


Muestras de código

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()
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())