Instance

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Non Navigabile

L'istanza è la classe di base per tutte le classi nella gerarchia delle classi Roblox che possono essere parte del tree DataModel. Non è possibile creare direttamente oggetti di classe.

L'istanza ha una funzione speciale chiamata Instance.new() che viene utilizzata per creare oggetti tramite codice. Questa funzione prende il nome della classe come parametro e restituisce l'oggetto creato. Le classi e i serviziAbstracti non possono essere creati con la funzione istanza.new.

Sommario

Proprietà

  • Lettura Parallela

    Determina se un Instance e i suoi discendenti possono essere clonati usando Instance:Clone() , e possono essere salvati / pubblicati.

  • Capabilities:SecurityCapabilities
    Lettura Parallela

    Il set di capacità consentite per essere utilizzate per gli script all'interno di questo container.

  • Lettura Parallela

    Un identificatore non unico della Instance .

  • Non Replicato
    Lettura Parallela

    Determina il padre gerarchico di Class.Instance .

  • Nascosto
    Lettura Parallela
    Obsoleto

    Una proprietà obsoleta che proteggeva CoreGui oggetti.

  • Non Replicato
    Lettura Parallela

    Consente all'istanza di essere un Container Sandbox.

  • UniqueId:UniqueId
    Non Replicato
    Non programmabile
    Lettura Parallela

Metodi

Eventi

Proprietà

Archivable

Lettura Parallela

Questa proprietà determina se l'istanza dovrebbe essere inclusa quando l'esperienza viene pubblicata o salvata, o quando Clone() è chiamato su uno degli antenati dell'esempio. Chiamare Clone() direttamente su un'istanza restituirà nil se

La copia di un oggetto in Studio utilizzando le opzioni Duplicate o Copy / Paste ignorerà la sua proprietà 1> Class.Instance.Archivable|Archivable1> e imposterà 4> Class.Instance.Archivable|Archivable4> su 7> true7> per la copia.


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

Capabilities

SecurityCapabilities
Lettura Parallela
Sicurezza Script Roblox

Il set di capacità consentite per essere utilizzate per gli script all'interno di questa esempio. Per rendere effettive le capacità, Instance.Sandboxed la proprietà deve essere abilitata.

Questa proprietà è utilizzata da una Proprietàsperimentale. Vedi la pagina Script Capilities per ulteriori dettagli.

Name

Lettura Parallela

Un identificatore non unico della Instance .

Questa proprietà è un identificatore che descrive un oggetto. I nomi non sono necessariamente identificatori unici, tuttavia; i figli di un oggetto possono condividere lo stesso nome. I nomi vengono utilizzati per mantenere l'organizzazione della gerarchia dell'oggetto, insieme all'autorizzazione degli script ad accedere a oggetti specifici. Il nome di un'istanza non può essere superato da 100 caratteri.

Il nome di un oggetto viene spesso utilizzato per accedere all'oggetto attraverso la gerarchia del modello di dati utilizzando i seguenti metodi:


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

Per rendere un oggetto accessibile utilizzando l'operatore punto, il nome di un oggetto deve seguire una certa sintassi. Il nome dell'oggetto deve iniziare con un punto o lettera. Il resto del nome può contenere solo lettere, numeri o trattini (non altri caratteri speciali). Se il nome dell'oggetto non segue questa sintassi non sarà accessibile utilizzando l'operatore punto e Lua non interpreterà il suo nome come un identificatore.

Se più di un oggetto con lo stesso nome sono fratelli allora qualsiasi tentativo di indice un oggetto con lo stesso nome restituirà l'unico tra gli oggetti trovati simile a Instance:FindFirstChild() , ma non sempre l'oggetto desiderato. Se un oggetto specifico deve essere accessato tramite il codice, è raccomandato dare a un nome unico, o garantire che nessuno dei suoi fratelli condivida lo stesso nome.

Nota, un nome completo che mostra la gerarchia dell'esempiopuò essere ottenuto utilizzando Instance:GetFullName() .

Parent

Non Replicato
Lettura Parallela

La proprietà Instance definisce il genitore gerarchico di Class.Instance . La seguente terminologia viene comunemente utilizzata quando si parla di come questa proprietà viene Impostare:

  • Un oggetto è un figlio ( associato a ) un altro oggetto quando il suo padre è impostato su quel figlio.
  • I discendenti di un Instance sono i figli di quell'oggetto, plus i figli dei figli anche.
  • I antenati di un Instance sono tutti gli oggetti di cui l'istanza è discendente.

È da questa proprietà che molti altri membri dell'API ottengono il loro nome, come GetChildren e FindFirstChild .

La funzione Remove imposta questa proprietà su null. L'调用 di Destroy imposterà il Parent di un oggetto distrutto e tutti i suoi discendenti su Instance e anche 1>lock1> la ProprietàParent. Si verifica un errore quando si imposta il Parent di un oggetto distrutto.

Questa proprietà viene anche utilizzata per gestire se un oggetto esiste nel gioco o ha bisogno di essere rimosso. Fintanto che un oggetto padre è in the DataModel , viene memorizzato in una variabile, o è riferito da un'altra proprietà oggetto, allora l'oggetto rimane

I nuovi oggetti creati utilizzando Instance.new() non avranno un parent, e di solito non saranno visibili o funzionali fino a quando uno non è Impostare. La creazione più elementare di un oggetto ha due passaggi: la creazione dell'oggetto, quindi la impostazione del suo parent.


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

Quando vengono apportate modifiche a certain properties while an instance is parented in the DataModel , the engine may need to perform extra work internally (for things like replication, rendering e GUI layout). Ogni volta che possibile, cambia le proprietà di un'esempioprima di averla impostata, invece di dopo averla impostata, per evitare di eseguire quel lavoro inutilmente.

Replicazione dell'oggetto

Un oggetto creato dal server non si replica ai client fino a quando non è parented a qualche oggetto che è replicato. Quando crea un oggetto allora impostando molte proprietà, è raccomandato di impostare Parent ultimo . Ciò garantisce che l'oggetto si replica una volta, invece di replicare molte modifiche delle proprietà.


local part = Instance.new("Part") -- Evita di utilizzare il secondo parametro qui
part.Anchored = true
part.BrickColor = BrickColor.new("Really red")
-- Potenzialmente molte altre modifiche alla proprietà potrebbero andare qui...
-- Imposta sempre il padre l'ultimo!
part.Parent = workspace

Tuttavia, se stavi parentando le tue parti a Model il cui padre non è ancora stato impostato, allora la parenting di ciascuna parte a quel modello è ok poiché il modello non avrebbe replicato ancora.

RobloxLocked

Nascosto
Lettura Parallela
Sicurezza Plugin

Questa proprietà usa per proteggere gli oggetti nel servizio CoreGui da essere modificati dagli utenti in modo non autorizzato. È stata deprecata e non fa nulla.

Sandboxed

Non Replicato
Lettura Parallela
Sicurezza Script Roblox

Consente all'istanza di essere un Container Sandbox. I Container Sandbox sono una funzione sperimentale che limita le azioni che gli script all'interno di un particolare container possono eseguire.

Vedi la pagina Capabilità di script per ulteriori dettagli.

UniqueId

UniqueId
Non Replicato
Non programmabile
Lettura Parallela
Sicurezza Roblox

Metodi

AddTag

void

Questo metodo applica un tag all'esempio, con nessun effetto se il tag è già applicato. L'aggiunta di un tag avrà successo con successo con il tag fornito.

Nota che quando si etichetta un'istanza, è comune che alcune risorse siano utilizzate per dare la funzionalità del tag, ad esempio connessioni di eventi o tabelle. Per prevenire le perdite di memoria, è una buona idea pulire queste (disconetti, imposta su nil , ecc

Parametri

tag: string

Restituzioni

void

ClearAllChildren

void

Questa funzione distrugge tutti i figli di un'esempio.

Come Instance:Destroy() chiama anche i figli di un oggetto su cui è utilizzato, questa funzione distruggerà tutti i discendenti.

Alternative a ClearAllChildren

Se lo sviluppatore non vuole distruggere tutti i discendenti, dovrebbe utilizzare Instance:GetChildren() o Instance:GetDescendants() per loop attraverso un oggetto e selezionare cosa distruggere. Ad esempio, il seguente esempio di codice distruggerà tutte le parti in un oggetto.


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

Restituzioni

void

Campioni di codice

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 di un'istanza e tutti i suoi discendenti, ignorando tutte le istanze che non sono Archivable . La copia della root instance è restituita da questo metodo e il

Se una proprietà di riferimento come ObjectValue.Value è impostata in un'esempioclonata, il valore della proprietà della copia dipende dal valore originale:

  • Se una proprietà di riferimento si riferisce a un'istanza che è stata anche clonata, la copia si riferisce alla copia.
  • Se una proprietà di riferimento si riferisce a un oggetto che non era non clonato, lo stesso valore viene mantenuto nella copia.

Restituzioni

Campioni di codice

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

Imposta la proprietà Instance.Parent su nulla, blocca la ProprietàInstance.Parent , disconnette tutte le connessioni e chiama Distruggi su tutti i figli. Questa funzione è il modo corretto per scartare gli oggetti che non sono più richiesti. La scartatura di oggetti non necessari è importante, poiché oggetti

Consiglio: Dopo aver chiamato Distruggi su un oggetto, imposta qualsiasi variabile che si riferisce all'oggetto (o ai suoi discendenti) su null. Ciò impedisce che il tuo codice acceda a qualcosa da fare con l'oggetto.


local part = Instance.new("Part")
part.Name = "Hello, world"
part:Destroy()
-- Non fare questo:
print(part.Name) --> "Hello, Mondo" (in inglese)
-- Fai questo per evitare che la linea sopra non funzioni:
part = nil

Una volta che un Instance è stato distrutto da questo metodo, non può essere riutilizzato poiché la proprietà Instance.Parent è bloccata. Per rimuovere temporaneamente un oggetto, imposta Parent invece. Ad esempio:


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

Per distruggere un oggetto dopo un certo periodo di tempo, usa Debris:AddItem() .


Restituzioni

void

Campioni di codice

Instance:Destroy()

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

FindFirstAncestor

Scrivi Parallelo

Restituisce il primo antenato della Instance il cui Instance.Name è uguale al nome fornito.

Questa funzione funziona in alto, il che significa che inizia all'esempioimmediata Instance.Parent e lavora verso il DataModel . Se non viene trovato alcun antenato corrispondente, restituisce null.

Il seguente codice snippet troverebbe l'antenato comune dell'oggetto chiamato "Car".


local car = object:FindFirstAncestor("Car")

For le varianti di questa funzione che trovano antenati di una classe specifica, vedi Instance:FindFirstAncestorOfClass() e Instance:FindFirstAncestorWhichIsA() .

Parametri

name: string

Il Instance.Name da cercare.


Restituzioni

Il Instance trovato.

FindFirstAncestorOfClass

Scrivi Parallelo

Restituisce il primo antenato della Instance il cui Object.ClassName è uguale al nome dato.

Questa funzione funziona in alto, il che significa che inizia all'esempioimmediata Instance.Parent e lavora verso il DataModel . Se non viene trovato alcun antenato corrispondente, restituisce null.

Un uso comune di questa funzione è trovare il Model a cui appartiene. Ad esempio:


local model = part:FindFirstAncestorOfClass("Model")

Questa funzione è una variante di Instance:FindFirstAncestor() che controlla la proprietà Object.ClassName invece di Instance.Name . 1> Class.Instance:FindFirstAncestorWhichIsA()1> esiste anche, usando il metodo 4> Class.Object:IsA()

Parametri

className: string

Il Object.ClassName da cercare.


Restituzioni

Il Instance trovato.

FindFirstAncestorWhichIsA

Scrivi Parallelo

Restituisce il primo antenato di Instance per il quale Object:IsA() restituisce vero per il nome dato.

Questa funzione funziona in alto, il che significa che inizia all'esempioimmediata Instance.Parent e lavora verso il DataModel . Se non viene trovato alcun antenato corrispondente, restituisce null.

A differenza di Instance:FindFirstAncestorOfClass() , questa funzione usa Object:IsA() che rispetta l'ereditarietà delle classi. Ad esempio:


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

Pertanto, il seguente esempio di codice restituirà il primo antenato BasePart , indipendentemente dal fatto che sia un WedgePart , MeshPart o 2>Class.Part2> .


local part = object:FindFirstAncestorWhichIsA("BasePart")

Vedi anche, Instance:FindFirstAncestor() .

Parametri

className: string

Il Object.ClassName da cercare.


Restituzioni

Il Instance trovato.

FindFirstChild

Scrivi Parallelo

Restituisce il primo figlio della Instance con il nome fornito,

or nil if no such child exists. If the optional recursive argument is true, this function搜索所有子子孫孫 rather than only the immediate children of the Instance .

Controllo dell'esistenza di un oggetto

FindFirstChild è necessario se si deve verificare l'esistenza di un oggetto prima di continuare. Cercare un figlio per nome usando l'operatore punto lancia un errore se il figlio non esiste.


-- I seguenti errori di riga se la parte non esiste nell'area di Area di lavoro:
workspace.Part.Transparency = 0.5

Usa FindFirstChild per controllare prima la parte e poi usa un if-句 per eseguire il codice che ne ha bisogno.


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

Trovare un bambino il cui nome corrisponde a una proprietà

A volte l' Name di un oggetto è lo stesso di quello di una proprietà del suo Parent. Quando si utilizza l'operatore punto, le proprietà hanno la precedenza sui figli se condividono un nome.

Nell'esempio seguente, un Folder chiamato "Color" viene aggiunto a un Part , che ha anche la ProprietàPart.Color. 1>Class.Part.Color1> si riferisce al 4>Datatype.Color34>, non 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 vantaggio dell'utilizzo di FindFirstChild() in questo modo è che l'introduzione di nuove proprietà non impone un rischio nel tuo codice.

Nota di performance

FindFirstChild() richiede circa 20% di tempo in più rispetto all'uso del punto operatoro e quasi 8 volte più tempo in cui semplic

Parametri

name: string

Il Instance.Name da cercare.

recursive: bool

Indipendentemente dal fatto che la ricerca debba essere eseguita in modo ricorsivo o meno.

Valore predefinito: false

Restituzioni

Il Instance trovato.

Campioni di codice

Instance:FindFirstChild

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

FindFirstChildOfClass

Scrivi Parallelo

Restituisce il primo figlio della Instance il cui ClassName è uguale al nome dato.

Se non viene trovato nessun figlio corrispondente, questa funzione restituisce nulla.

A differenza di Instance:FindFirstChildWhichIsA() questa funzione utilizza solo oggetti la cui classe corrisponde all'ID specificato, ignorando l'ereditarietà delle classi.

Gli sviluppatori che cercano un bambino per nome dovrebbero usare Instance:FindFirstChild() invece.

Parametri

className: string

Il Object.ClassName da cercare.


Restituzioni

Il Instance trovato.

Campioni di codice

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

Scrivi Parallelo

Restituisce il primo figlio della Instance per il quale Object:IsA() restituisce vero per il nome dato.

Se non viene trovato nessun figlio corrispondente, questa funzione restituisce null. Se l'argomento recursivo opzionale è vero, questa funzione cerca tutti i discendenti piuttosto che solo i figli immediati della Instance .

A differenza di Instance:FindFirstChildOfClass() , questa funzione usa Object:IsA() che rispetta l'ereditarietà delle classi. Ad esempio:


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

Pertanto, il seguente esempio di codice restituirà il primo figlio BasePart , indipendentemente dal fatto che sia un WedgePart , MeshPart o 1> Class.Part1> .


local part = object:FindFirstChildWhichIsA("BasePart")

Gli sviluppatori che cercano un bambino per nome dovrebbero usare invece Instance:FindFirstChild() .

Parametri

className: string

Il Object.ClassName per essere cercato.

recursive: bool

Indipendentemente dal fatto che la ricerca debba essere eseguita in modo ricorsivo o meno.

Valore predefinito: false

Restituzioni

Il Instance trovato.

FindFirstDescendant

Scrivi Parallelo

Restituisce il primo discendente trovato con il Instance.Name .

Questo metodo è disabilitato e non può essere utilizzato. Per trovare il primo discendente di un'esempio, considera l'uso del parametro recursive su Instance:FindFirstChild() invece.

Parametri

name: string

Il Instance.Name per cui si cerca.


Restituzioni

Il Instance trovato.

GetActor

Scrivi Parallelo

Se il Instance è un Actor , il Actor stesso viene restituito. Altrimenti, il suo antenato più vicino 1>Class.Actor1> viene restituito. Se nessun antenato è un 4>Class.Actor4>, il risultato è 7>nil7> .


Restituzioni

Il Actor trovato.

GetAttribute

Variant
Scrivi Parallelo

Questo metodo restituisce il valore che è stato assegnato al nome dell'attributo specificato. Se nessun attributo è stato assegnato, nil è restituito.

Ad esempio, il seguente codice snippet imposta e poi ottiene il valore dell'attributo PositionIniziale dell'istanza:


local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)

Vedi anche

Parametri

attribute: string

Il nome dell'attributo che viene recuperato.


Restituzioni

Variant

Il valore che è stato assegnato al nome dell'attributo specificato. Se nessun nome dell'attributo è stato assegnato, nil è restituito.

GetAttributeChangedSignal

Questa funzione restituisce un evento che si comporta esattamente come l'evento Changed , ad eccezione del fatto che si attiva solo quando l'attributo specificato cambia; in effetti è simile a GetPropertyChangedSignal() ma per gli attributi.

In generale, è una buona idea utilizzare questo metodo invece di una connessione a Changed con una funzione che controlla il nome dell'attributo. Le chiamate successive a questa funzione sullo stesso oggetto con lo stesso nome dell'attributo restituiscono lo stesso evento.

L'esempio di codice seguente restituisce un segnale che attiva la funzione attributeChanged() quando la parte cambia la posizione iniziale:


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

Vedi anche Instance.AttributeChanged che si attiva ogni volta che viene cambiato qualsiasi attributo sull'esempio.

Parametri

attribute: string

Il nome dell'attributo specificato per cui il segnale di cambiamento viene restituito.


Restituzioni

Un evento che si attiva quando l'attributo specificato cambia.

GetAttributes

Scrivi Parallelo

Questo metodo restituisce un dizionario di coppie chiave-valore per ciascuna proprietà in cui la chiave è il nome della proprietà e il valore è un non- nil valore.

Ad esempio, il seguente codice snippet produce gli attributi e i valori di un'istanza:


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

Vedi anche Instance:GetAttribute() che restituisce il valore che è stato assegnato al nome dell'attributo specificato.


Restituzioni

Un dizionario di paia di stringa → variante per ciascuna proprietà in cui la stringa è il nome della proprietà e la variabile è un valore non null.

GetChildren

Instances
Scrivi Parallelo

Restituisce un array (una tabella in cui sono direttamente figli di ogni esempio, o ogni Instance cui il suo Parent è uguale all'oggetto. L' array può essere ripetuto utilizzando sia un numero generico che un for- loop generico:


-- Esempio di for-loop numerico
local children = workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

-- Esempio generico per-loop
local children = workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

I bambini sono ordinati per l'ordine in cui la loro proprietà Parent è stata impostata sull'oggetto.

Vedi anche la funzione GetDescendants .


Restituzioni

Instances

Un array che contiene i figli dell'esempio.

Campioni di codice

Instance:GetChildren

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

GetDebugId

Non Navigabile
Sicurezza Plugin

Restituisce una stringa codificata dell'ID di debug utilizzata internamente da Roblox.

Nota:

  • Questo oggetto è protetto. Tentando di utilizzarlo in un Script o in un LocalScript causerà un errore
  • Un ID di debug è un ID utilizzato nei processi di debug. Consente a un debugger di leggere ogni istruzione prima che un'applicazione la elabori. Tutti gli oggetti in Roblox agiscono come processi e ogni istruzione di esecuzione (o 'codice') che può essere debuggata se necessario
  • Questo può essere utile per i plugin che devono distinguere oggetti simili l'uno dall'altro (come gli oggetti che condividono lo stesso nome)

Parametri

scopeLength: number

La lunghezza della scala.

Valore predefinito: 4

Restituzioni

L'ID della Stringadi debug.

Campioni di codice

Instance:GetDebugId

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

GetDescendants

Scrivi Parallelo

Questo metodo oggetto restituisce un array che contiene tutti i discendenti di quell'oggetto. A differenza di Instance:GetChildren() , che restituisce solo i figli immediati di un oggetto, questo metodo trova ogni figlio dell'oggetto, ogni figlio di questi figli e così via.


Restituzioni

Un array che contiene i discendenti dell'esempio.

Campioni di codice

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

Scrivi Parallelo

Restituisce una stringa che descrive l'antenza dell'istanza. La stringa è una concatenazione dei Name dell'oggetto e dei suoi antenati, separati da periodi. Il DataModel ( game ) non è considerato. Ad esempio, un

Quando viene chiamato su un Instance che non è un discendente del DataModel, questa funzione considera tutti gli antenati fino al top senza un Parent .

Questa funzione è utile per il debug e il logging. Non dovresti tentare di analizzare la stringa restituita per qualsiasi operazione utile; questa funzione non escapa periodi (o altri simboli) nei nomi degli oggetti. In altre parole, anche se la sua uscita sembra essere un identificatore Lua valido, non è garantito.


Restituzioni

Il nome completo del Instance .

Campioni di codice

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

Parametri

name: string

Restituzioni

Variant

GetTags

Scrivi Parallelo

Questo metodo restituisce un array di etichette applicate all'esempiospecificata, come stringhe. Puoi aggiungere etichette sia in Studio nella finestra Proprietà o in tempo esecuzione con AddTag() .

Questo metodo è utile quando vuoi fare qualcosa con più tag su un'istanza alla volta. Tuttavia, è inefficace utilizzare questo metodo per controllare l'esistenza di un singolo tag; invece, usa HasTag() per controllare un tag specifico.


Restituzioni

HasTag

Scrivi Parallelo

Questo metodo restituisce true se il tag fornito è stato aggiunto all'oggetto. Puoi aggiungere tag sia in Studio nella finestra Proprietà o in tempo esecuzione con AddTag() .

Parametri

tag: string

Restituzioni

IsAncestorOf

Scrivi Parallelo

Restituisce vero se un Instance è un antenato del DIscendentedato.

Un Instance è considerato l'antenato di un oggetto se il suo Instance.Parent o uno dei suoi parenti Instance.Parent è impostato sul 2>Class.Instance2> .

Vedi anche, Instance:IsDescendantOf() .

Parametri

descendant: Instance

Il discendente Instance .


Restituzioni

Vero se il Instance è un antenato del DIscendentedato.

Campioni di codice

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

Scrivi Parallelo

Restituisce vero se un Instance è un discendente dell'antenato dato.

Un Instance è considerato il discendente di un oggetto se il padre dell'esempioo uno dei suoi parentè impostato sull'oggetto.

Nota, DataModel è un discendente di zero. Ciò significa che IsDescendantOf non può essere utilizzato con un parametro di zero per controllare se un oggetto è stato rimosso.

Vedi anche, Instance:IsAncestorOf() .

Parametri

ancestor: Instance

Il antenato Instance .


Restituzioni

Vero se il Instance è un discendente dell'antenato dato.

Campioni di codice

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

Questo metodo rimuove un tag da un'esempio. Non mostrerà un errore se l'oggetto non ha il tag. Il successo rimozione di un tag creerà un segnale creato da CollectionService:GetInstanceRemovedSignal() con il tag specificato.

Nota che quando si etichetta un'istanza, è comune che alcune risorse siano utilizzate per dare la funzionalità del tag, ad esempio connessioni di eventi o tabelle. Per prevenire le perdite di memoria, è una buona idea pulire queste (disconetti, imposta su nil , ecc.) quando non sono più necessarie per un tag.

Parametri

tag: string

Restituzioni

void

SetAttribute

void

Questo metodo imposta l'attributo con il nome specificato al valore specificato. Se il valore specificato è nil, l'attributo verrà rimosso, poiché nil viene restituito per impostazione predefinita.

Ad esempio, il seguente codice snippet imposta l'attributo Position iniziale dell'istanza a Vector3.new(0, 10, 0) :


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

Limitazioni

Requisiti e restrizioni di nome:

  • I nomi devono utilizzare solo caratteri alfanumerici e trattino.
  • Non sono consentiti spazi o simboli unici.
  • Le stringhe devono essere di 100 caratteri o meno.
  • I nomi non sono consentiti a iniziare con RBX a meno che il mittente non sia uno script del core Roblox (riservato per Roblox).

Quando si tenta di impostare un attributo a un inserisci / scrivinon supportato, viene visualizzato un errore.

Vedi anche:

Parametri

attribute: string

Il nome dell'attributo Impostare.

value: Variant

Il valore per impostare l'attributo specificato.


Restituzioni

void

WaitForChild

Può Rendere

Restituisce il figlio di Class.Instance con il nome specificato. Se il figlio non esiste, restituirà il thread corrente fino a quando non lo farà. Se il parametro timeOut è specificato, questo metodo terminerà dopo il numero specificato di secondi e restituirà nil .

Uso primario

WaitForChild() è estremamente importante quando si lavora sui codici in esecuzione dal client in un LocalScript . Il motore Roblox non garantisce il tempo o l'ordine in cui gli

Note

  • Questa funzione non si genera se un bambino con il nome fornito esiste quando viene fatto l'appello.
  • Instance:FindFirstChild() è un'alternativa più efficiente a WaitForChild() per gli oggetti che sono presi in considerazione.
  • Se un chiamata a questo metodo supera 5 secondi senza restituire, e nessun timeOut parametro è stato specificato, un avviso verrà stampato per l'uscita che il thread potrebbe produrre indefinitamente.

Parametri

childName: string

Il Instance.Name da cercare.

timeOut: number

Un parametro di scadenza opzionale.


Restituzioni

Il Instance trovato.

Campioni di codice

Instance:WaitForChild

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

Eventi

AncestryChanged

Si attiva quando la proprietà Instance.Parent dell'oggetto o uno dei suoi antenati viene modificata.

Questo evento include due parametri, child e parent. Child si riferisce al 2> Class.Instance2> il cui 5> Class.Instance.Parent5> è stato in realtà cambiato. 8>Parent8> si riferisce al nuovo 1> Class.Instance.Parent1> di questa esempio.

Puoi utilizzare questo evento per tracciare la distruzione di un'istanza in Studio, come la distruzione manuale nell'Explorer o attraverso un Collegare. Se hai bisogno di rilevare quando un'istanza viene distrutta utilizzando Instance:Destroy() , usa l'evento Instance.Destroying invece.

Parametri

child: Instance

Il Instance il cui Instance.Parent è stato cambiato.

parent: Instance

Il nuovo Instance.Parent di Class.Instance il cui Instance è stato cambiato.


Campioni di codice

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

Questo evento si attiva ogni volta che qualsiasi attributo viene cambiato sull'esempio, tra cui quando un attributo viene impostato su nil . Il nome dell'attributo cambiato viene passato alla funzione connessa.

Ad esempio, il seguente codice snippet connette la funzione attributeChanged() per essere eseguita ogni volta che uno degli attributi della parte cambia:


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

Vedi anche Instance:GetAttributeChangedSignal() che restituisce un evento che si attiva quando un determinato attributo specificato cambia.

Parametri

attribute: string

Il nome dell'attributo che è stato cambiato.


ChildAdded

Si attiva dopo che un oggetto è parented a questo Instance .

Nota, quando si utilizza questa funzione su un client per rilevare gli oggetti creati dal server, è necessario utilizzare Instance:WaitForChild() quando si indizza questi discendenti. Questo perché l'oggetto e i suoi discendenti non sono garantiti di replicarsi dal server al client contemporaneamente. Ad esempio:


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

Nota, questa funzione funziona solo per i figli immediati della Instance . Per una funzione che cattura tutti i discendenti, usa Instance.DescendantAdded .

Vedi anche, Instance.ChildRemoved .

Parametri

child: Instance

Il Instance che è stato aggiunto.


Campioni di codice

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

Si attiva dopo che un bambino è stato rimosso da questo Instance .

Remove fa riferimento a quando il genitore di un oggetto viene cambiato da questo Instance a qualcosa di diverso da questo Instance . Nota, questo evento si attiva anche quando un figlio viene distrutto (utilizzando Instance:Destroy() ) come la funzione di distruzione imposta un genitore di un oggetto a zero.

Questa funzione funziona solo per i figli immediati della Instance . Per una funzione che cattura tutti i discendenti, usa Instance.DescendantRemoving .

Vedi anche Instance.ChildAdded .

Parametri

child: Instance

Il Instance che è stato rimosso.


Campioni di codice

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

L'evento DescendantAdded viene attivato dopo che un discendente viene aggiunto al Instance .

Come descendantAdded fires for every DIscendente, parenting an object to the Instance will fire the event for this object and all of its descendants individually.

Gli sviluppatori interessati solo ai figli immediati di Instance dovrebbero usare invece Instance.ChildAdded .

Vedi anche Instance.DescendantRemoving .

Parametri

descendant: Instance

Il Instance che è stato aggiunto.


Campioni di codice

Instance.DescendantAdded

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

DescendantRemoving

Questo evento fa in modo che immediatamente prima che il genitore Instance cambiamenti in modo che una descente istanza non sia più un'esempioDIscendente. 1> Class.Instance:Destroy()|Destroy()1> cambia il genitore di 4> Class.Instance.Parent|Parent</

Poiché questo evento si attiva prima della rimozione del DIscendente, il padre del discendente non sarà cambiato al momento di questo evento di rimozione. Se il discendente è anche un figlio diretto del parent, questo evento si attiverà prima di Class.Instance.ChildRemoved .

Se un discendente ha figli, questo evento si attiva con il discendente prima, seguito dai suoi discendenti.

Avviso

Questo evento si attiva con l'oggetto discendente che viene rimosso. Cercare di impostare il Parent del discendente a qualcosa di diverso fallirà. Ecco un esempio che mostra questo:


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

Vedi anche DescendantAdded .

Parametri

descendant: Instance

Il Instance che viene rimosso.


Campioni di codice

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

Il Instance non verrà mai eliminato dalla memoria mentre una funzione connessa lo sta ancora utilizzando. Tuttavia, se la funzione viene generata in qualsiasi punto, la funzione discendente e i suoi discendenti saranno affidati a Instance .

Se la proprietà Workspace.SignalBehavior è impostata su Enum.SignalBehavior.Immediate, questo evento si attiva immediatamente prima che la Instance o uno dei suoi antenati venga distrutto con 1> Class.Instance:Destroy()1> .

Se la proprietà Workspace.SignalBehavior è impostata su Enum.SignalBehavior.Deferred, questo evento si attiva al punto di ripresa successivo, che sarà dopo la distruzione di uno dei suoi antenati con Instance .

Con il comportamento Deferred, la connessione di uno script al suo evento Instance.Destroying è problematica, poiché lo script verrà distrutto prima che il richiamo possa essere chiamato (il che significa che non sarà eseguito).

Quando si elimina un Instance in Studio, come la cancellazione manuale attraverso Explorer o attraverso un Collegare, la Instance non viene distrutta. Invece, il padre è impostato su 1> nil1> che si può tracciare con 4> Class.Instance.AncestryChanged4> .


Campioni di codice

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