Instance
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
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
Determina si un Instance y sus descendientes pueden ser clonados usando Instance:Clone() , y se pueden guardar / publicar.
El conjunto de capacidades permitidas para ser utilizadas para scripts dentro de este contenedor.
Un identificador no único del Instance.
Determina el padre jerárquico del Instance .
Una propiedad obsoleta que solía proteger CoreGui objetos.
Convierte la instancia en un contenedor de arena.
Un identificador único para la instancia.
Métodos
Aplica una etiqueta a la instancia.
Esta función destruye todos los hijos de una instancia.
Crea una copia de una instancia y todos sus descendientes, ignorando las instancias que no sean Archivable.
Establece la propiedad Instance.Parent a nil, bloquea la propiedad Instance.Parent y desconecta todas las conexiones, y llama Destroy() a todos los hijos.
Devuelve al primer ancestro del Instance cuyo Instance.Name es igual al nombre dado.
Devuelve al primer ancestro del Instance cuyo Object.ClassName es igual a la clase dada.
Devuelve al primer ancestro del Instance para el que Object:IsA() devuelve verdadero para la clase dada.
Devuelve el primer hijo del Instance encontrado con el nombre dado.
Devuelve el primer hijo del Instance cuyo ClassName es igual al nombre de clase dado.
Devuelve el primer hijo del Instance para quien Object:IsA() devuelve verdadero para la clase dada.
Devuelve al primer descendiente encontrado con el dado Instance.Name .
Devuelve el Actor asociado con la Instancia, si hay alguno.
Devuelve el valor que se ha asignado al nombre de atributo dado.
Devuelve un evento que se activa cuando cambia el atributo dado.
Devuelve un diccionario de los atributos de la instancia.
Devuelve un array que contiene todos los hijos de la instancia.
Devuelve una cadena codificada del ID de depuración utilizado internamente por Roblox.
Devuelve un array que contiene todos los descendientes de la instancia.
Devuelve una cadena que describe el ancestro de la instancia.
Obtiene un array de todas las etiquetas aplicadas a la instancia.
Compruebe si la instancia tiene una etiqueta dada.
Devuelve verdadero si un Instance es un ancestro del descendiente dado.
Devuelve true si un Instance es un descendiente del antecesordado.
Devuelve true si el valor almacenado en la propiedad especificada no es predeterminado.
Elimina una etiqueta de la instancia.
Establece el atributo con el nombre dado al valor dado.
Devuelve el hijo del Instance con el nombre dado. Si el hijo no existe, producirá el hilo actual hasta que lo haga.
Eventos
Se incendia cuando la propiedad Instance.Parent de la objeto o una de sus ancestros cambia.
Se enciende cada vez que se cambia un atributo en el Instance.
Se produce fuegos después de que un objeto sea padre de este Instance .
Se produce fuegos después de que se elimine a un niño de este Instance .
Se produce fuegos después de que se agregue un descendiente al Instance.
Se incendia inmediatamente antes de que se elimine un descendiente del Instance se elimine.
Se incendia inmediatamente antes (o se retrasa hasta después) de que la instancia se destruya a través de Instance:Destroy() .
Propiedades
Archivable
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()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
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
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.Baseplatelocal 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
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
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
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
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
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() doif descendant:IsA("BasePart") thendescendant:Destroy()endend
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.
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
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().
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 = niltask.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.
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
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
El Instance.Name que hay que buscar.
Devuelve
FindFirstAncestorOfClass
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
El Object.ClassName que hay que buscar.
Devuelve
FindFirstAncestorWhichIsA
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")) --> trueprint(part:IsA("BasePart")) --> trueprint(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
El Object.ClassName que hay que buscar.
Devuelve
FindFirstChild
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 trabajoWorkspace.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 thenpart.Transparency = 0.5end
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 = partlocal c = part.Color --> Un Color3local 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
El Instance.Name para buscar.
Si debe o no llevarse a cabo la búsqueda recursivamente.
Devuelve
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".
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
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
El Object.ClassName que hay que buscar.
Devuelve
Muestras 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
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")) --> ciertoprint(part:IsA("BasePart")) --> ciertoprint(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
El Object.ClassName para buscar.
Si debe o no llevarse a cabo la búsqueda recursivamente.
Devuelve
FindFirstDescendant
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
El Instance.Name para buscar.
Devuelve
GetActor
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
GetAttribute
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.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Ver también
- Instance:SetAttribute() que establece el atributo con el nombre dado al valor dado.
- Instance:GetAttributes() que devuelve un diccionario de pares clave-valor para cada uno de los atributos de la instancia.
Parámetros
El nombre del atributo que se está recuperando.
Devuelve
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
El nombre del atributo especificado para el cual se devuelve la señal de cambio.
Devuelve
Un evento que se activa cuando cambia el atributo dado.
GetAttributes
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.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(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
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é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")-- Ejemplo genérico de bucle whilelocal children = Workspace:GetChildren()for i, child in children doprint(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
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.
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
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
La longitud del alcance.
Devuelve
La cadena de identificación de depuración.
Muestras 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 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.
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
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
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.
-- 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
GetStyledPropertyChangedSignal
Parámetros
Devuelve
GetTags
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
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
Devuelve
IsAncestorOf
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
Devuelve
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.
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
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
Devuelve
Muestras de código
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
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
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
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.Partpart: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
- Instance:GetAttribute() que devuelve el valor que se ha asignado al nombre del atributo dado.
- Instance:GetAttributes() que devuelve un diccionario de pares clave-valor para cada uno de los atributos de la instancia.
Parámetros
El nombre del atributo que se está establecer.
El valor para establecer el atributo especificado a.
Devuelve
WaitForChild
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
El Instance.Name que hay que buscar.
Un parámetro de tiempo de espera opcional.
Devuelve
Muestras 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
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
El Instance cuyo Instance.Parent ha sido cambiado.
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.
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
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
Muestras 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
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
Muestras 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 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
Muestras de código
This following example will print the name of any object that is added to the Workspace:
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
Muestras 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
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.
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())