Instance

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Nicht durchsuchbar

Instance ist die Basisklasse für alle Klassen in der Roblox-Klassenpyramide, die Teil des DataModel Baums sein können.

Es ist nicht möglich, direkt Wurzel Instance Objekte zu erstellen, aber der spezielle Instance.new() Konstruktor erstellt Objekte über Code, nimmt den Namen der Klasse als Parameter und gibt das erstellte Objekt zurück.

Zusammenfassung

Eigenschaften

  • Parallel lesen

    Bestimmt, ob ein Instance und seine Nachkommen mit Instance:Clone() geklont werden können und gespeichert/veröffentlicht werden können.

  • Capabilities:SecurityCapabilities
    Parallel lesen

    Die Gruppe der Fähigkeiten, die für Skripte innerhalb dieses Containers verwendet werden kann.

  • Parallel lesen

    Eine nicht eindeutige Kennung des Instance.

  • Nicht repliziert
    Parallel lesen

    Bestimmt den hierarchischen Eltern des Instance.

  • Verborgen
    Plugin-Sicherheit
    Parallel lesen
    Veraltet

    Eine veraltete Eigenschaft, die dazu gedient hat, CoreGui Objekte zu schützen.

  • Nicht repliziert
    Parallel lesen

    Verwandelt die Instanz in einen sandboxierten Container.

  • UniqueId:UniqueId
    Nicht repliziert
    Nicht skriptfähig
    Roblox-Sicherheit
    Parallel lesen

    Eine eindeutige Kennung für die Instanz.

Methoden

Ereignisse

Eigenschaften

Archivable

Parallel lesen

Diese Eigenschaft bestimmt, ob die Instanz enthalten sein soll, wenn die Erfahrung veröffentlicht oder gespeichert wird, oder wenn Clone() auf einem der Vorfahren der Instanz aufgerufen wird.Das Direktaufrufen von auf einer Instanz wird zurückgeben, wenn diese Instanz nicht ist .

Das Kopieren eines Objekts in Studio mit den Optionen Duplizieren oder Kopieren / Einfügen ignoriert seine eigene Archivable Eigenschaft und setzt Archivable auf true für die Kopie.


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

Capabilities

SecurityCapabilities
Parallel lesen

Die Gruppe der Fähigkeiten, die für Skripte innerhalb dieser Instanz verwendet werden können.Für die Inkraftsetzung der Fähigkeiten muss die Instance.Sandboxed Eigenschaft aktiviert sein.

Diese Eigenschaft wird von einer experimentellen Funktion verwendet. Siehe Skript-Fähigkeiten für weitere Details.

Name

Parallel lesen

Eine nicht eindeutige Kennung des Instance.Namen werden verwendet, um die Objektarchitektur zu organisieren und Skripten den Zugriff auf spezifische Objekte zu ermöglichen.Der Name einer Instanz darf nicht mehr als 100 Zeichen groß sein.

Der Name eines Objekts wird oft verwendet, um auf das Objekt über die Datenmodell-Hierarchie mit den folgenden Methoden zuzugreifen:


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

Um ein Objekt mit dem Punktoperator ( . ) zugänglich zu machen, muss sein Name mit einem Unterstrich oder einem Buchstaben beginnen, und der Rest des Namens kann nur Buchstaben, Zahlen oder Unterstriche enthalten (keine anderen Sonderzeichen).Wenn der Name eines Objekts dieser Syntax nicht folgt, ist es nicht über den Punkt-Operator zugänglich und Luau interpretiert seinen Namen nicht als Identifikator.

Wenn mehr als ein Objekt mit demselben Namen Geschwister sind, wird jede Versuche, ein Objekt nach diesem Namen zu indexieren, nur eines der Objekte zurückgeben, ähnlich wie Instance:FindFirstChild(), aber nicht immer das gewünschte Objekt.Wenn ein bestimmtes Objekt über Code zugänglich sein muss, wird empfohlen, es einen einzigartigen Namen zu geben oder zu garantieren, dass keiner seiner Geschwister denselben Namen teilt.

Siehe auch Instance:GetFullName(), um einen vollständigen Namen zu erhalten, einschließlich der Hierarchie des Objekts.

Parent

Nicht repliziert
Parallel lesen

Die Eigenschaft Parent bestimmt den hierarchischen Eltern des Instance.Die folgende Terminologie wird häufig verwendet, wenn es darum geht, wie diese Eigenschaft festgelegt wird:

  • Ein Objekt ist ein Kind von, oder wird übernommen , ein anderes Objekt, wenn sein Parent auf dieses Objekt festgelegt ist.

  • Die Nachkommen eines Instance sind die Kinder dieses Objekts, plus die Nachkommen der Kinder ebenfalls.

  • Die Vorfahren eines Instance sind alle Objekte, von denen die Instanz ein Nachkomme ist.

Es ist von der Parent Eigenschaft, dass viele andere API-Mitglieder ihren Namen erhalten, wie GetChildren() und FindFirstChild().Diese Eigenschaft wird auch verwendet, um zu verwalten, ob ein Objekt in der Erfahrung existiert oder entfernt werden muss.Solange der Eltern eines Objekts in der DataModel , in einer Variable gespeichert wird oder durch das Eigenschaft eines anderen Objekts referenziert wird, bleibt das Objekt in der Erfahrung; ansonsten wird das Objekt automatisch entfernt.

Das Aufrufen von Destroy() wird die Parent eines Instance und all seiner Nachkommen auf nil festlegen, und auch sperren die Parent Eigenschaft.Bei der Festlegung des Parent eines zerstörten Objekts wird ein Fehler erhoben.

Neu erstellte Objekte mit Instance.new() werden keinen Eltern haben und sind normalerweise nicht sichtbar oder funktionsfähig, bis ein Eltern festgelegt wird.

Objekt-Replikation

Ein von dem Server erstelltes Objekt wird sich nicht auf Clients replizieren, bis es einem Objekt zugewiesen wird, das repliziert wird.Wenn du ein Objekt erstellst und viele Eigenschaften festlegst, wird empfohlen, die Eigenschaft Parent zu setzen last .Dies gewährleistet, dass das Objekt einmal repliziert wird, anstatt viele Eigenschaftsänderungen zu replizieren.


local Workspace = game:GetService("Workspace")
-- Setze den Eltern der neuen Instanz zuletzt (empfohlen)
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = Workspace

Wenn jedoch Elternteile an einen Model übertragen werden, dessen Elternteil noch nicht festgelegt wurde, ist die Übertragung jedes Teils an dieses Modell akzeptabel, da das Modell nicht repliziert worden wäre.

RobloxLocked

Verborgen
Plugin-Sicherheit
Parallel lesen

Diese Eigenschaft wurde verwendet, um Objekte im CoreGui vor Änderungen durch Benutzer in unautorisierter Weise zu schützen.Es wurde veraltet und tut nichts.

Sandboxed

Nicht repliziert
Parallel lesen

Verwandelt die Instanz in einen verschachtelten Container , eine experimentelle Funktion, die die Aktionen einschränkt, die Skripte innerhalb eines bestimmten Containers ausführen können.Siehe Skript-Fähigkeiten für weitere Details.

UniqueId

UniqueId
Nicht repliziert
Nicht skriptfähig
Roblox-Sicherheit
Parallel lesen

Eine eindeutige Kennung für die Instanz, die sich von Instance.Name unterscheidet, die nicht unbedingt einzigartig ist.

Methoden

AddTag

()

Diese Methode fügt einem Tag der Instanz einen Effekt hinzu, ohne dass es Auswirkungen hat, wenn der Tag bereits angewendet wird.Der erfolgreiche Hinzuschalten eines Tags schaltet ein Signal ab, das von CollectionService:GetInstanceAddedSignal() mit dem angegebenen Tag erstellt wurde.

Warnungen
  • Die Tags einer Instanz, die auf clientseitig hinzugefügt wurden, werden fallen gelassen, wenn der Server später ein Tag auf dieser Instanz hinzufügt oder entfernt, weil der Server alle Tags zusammen repliziert und vorherige Tags überschreibt.

  • Wenn Sie eine Instanz kennzeichnen, ist es üblich, dass einige Ressourcen verwendet werden, um dem Tag seine Funktionalität zu geben, zum Beispiel Ereignisverbindungen oder Tabellen.Um Speicherlecks zu verhindern, ist es eine gute Idee, diese zu löschen (verbinden Sie sich ab, stellen Sie auf nil ein usw.), wenn sie für einen Tag nicht mehr benötigt werden.Tun Sie dies, wenn Sie Instance:RemoveTag() aufrufen, Instance:Destroy() aufrufen oder in einer Funktion, die mit einem von CollectionService:GetInstanceRemovedSignal() zurückgegebenen Signal verbunden ist.

Parameter

tag: string
Standardwert: ""

Rückgaben

()

ClearAllChildren

()

Diese Funktion zerstört alle Kinder und Nachkommen einer Instanz.


local part = Instance.new("Part")
-- Add some sparkles
for i = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
local sc = Instance.new("Sparkles")
sc.Parent = sparkles
end
print("Children:", #part:GetChildren()) --> Children: 3
part:ClearAllChildren()
print("Children:", #part:GetChildren()) --> Children: 0

Wenn du nicht alle Kinder und Nachkommen zerstören möchtest, verwende entweder Instance:GetChildren() oder Instance:GetDescendants(), um durch diese Kinder/Nachkommen zu schleifen und auszuwählen, was zu zerstören ist.Zum Beispiel wird das folgende Codebeispiel alle BaseParts absteigend von einem Model zerstören:


local Workspace = game:GetService("Workspace")
local model = Workspace:FindFirstChild("TestModel")
for _, descendant in model:GetDescendants() do
if descendant:IsA("BasePart") then
descendant:Destroy()
end
end

Rückgaben

()

Clone() erstellt eine Kopie einer Instanz und all ihrer Nachkommen, ignoriert alle Instanzen, die nicht Archivable sind.Die Kopie der Wurfinstanz wird mit dieser Methode zurückgegeben und ihre Parent wird auf nil gesetzt.Beachten Sie, dass, wenn die Instanz selbst auf Archivable gesetzt ist auf false, diese Funktion nil zurückgibt.

Wenn eine Referenz属性 wie ObjectValue.Value in einer geklonten Instanz festgelegt wird, hängt der Wert der Kopieigenschaft vom Wert der ursprünglichen属性 ab:

  • Wenn eine Referenz-Eigenschaft sich auf eine Instanz bezieht, die auch geklont wurde , wird die Kopie sich auf die Kopie beziehen.
  • Wenn eine Referenz-Eigenschaft sich auf ein Objekt bezieht, das nicht geklont wurde , wird der gleiche Wert in der Kopie beibehalten.

Rückgaben

Code-Beispiele

Demonstrates cloning a model using Instance:Clone().

Cloning an Instance

local Workspace = game:GetService("Workspace")
-- Get a reference to an existing object
local model = script.Parent.Model
-- Create a clone of the model
local clone = model:Clone()
-- Move the clone so it's not overlapping the original model
clone:PivotTo(model.PrimaryPart.CFrame - (Vector3.xAxis * 10))
-- Add the clone to the Workspace
clone.Parent = Workspace

Destroy

()

Setzt die Eigenschaft Instance.Parent auf nil, sperrt die Eigenschaft Instance.Parent und trennt alle Verbindungen und ruft Destroy() auf allen Kindern auf.Diese Funktion ist der korrekte Weg, um Objekte loszuwerden, die nicht mehr benötigt werden.

Die Entfernung unbenötigter Objekte ist wichtig, da unnötige Objekte und Verbindungen an einem Ort Speicher verbrauchen, was mit der Zeit zu ernsthaften Leistungsproblemen führen kann.

Als Best Practice, nachdem du Destroy() auf ein Objekt aufgerufen hast, lege alle Variablen, die sich auf das Objekt (oder seine Nachkommen) beziehen, auf nil fest.Dies verhindert, dass dein Code etwas mit dem Objekt zu tun hat.


local part = Instance.new("Part")
part.Name = "Hello, world"
part:Destroy()
-- Tun Sie das nicht:
print(part.Name) --> "Hallo, Welt"
-- Tun Sie dies, um die obige Zeile von der Arbeit zu verhindern:
part = nil

Sobald ein Instance durch diese Methode zerstört wurde, kann es nicht wiederverwendet werden, da die Instance.Parent Eigenschaft gesperrt ist.Um vorübergehend ein Objekt zu entfernen, anstatt es zu zerstören, setze Parent auf nil.Zum Beispiel:


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

Um ein Objekt nach einer bestimmten Zeit zu zerstören, verwende Debris:AddItem().


Rückgaben

()

Code-Beispiele

Zeigt die Zerstörung eines Teils mit der Instance:Destroy()-Funktion auf.

Diese Funktion ist der korrekte Weg, um Objekte loszuwerden, die nicht mehr benötigt werden.

Instanz:Zerstören()

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

FindFirstAncestor

Parallel schreiben

Gibt den ersten Vorfahren der Instance zurück, dessen Instance.Name dem angegebenen Namen gleich ist.

Diese Funktion funktioniert nach oben, d.h. sie beginnt bei der unmittelbaren Instanz Instance.Parent und arbeitet sich nach oben bis zur DataModel.Wenn kein passender Vorfahre gefunden wird, gibt er nil zurück.

Das folgende Code-Snippet würde den ersten Vorfahren des Objekts namens Car finden.


local car = object:FindFirstAncestor("Car")

Für Varianten dieser Funktion, die Vorfahren einer bestimmten Klasse finden, siehe Instance:FindFirstAncestorOfClass() und Instance:FindFirstAncestorWhichIsA().

Parameter

name: string

Die Instance.Name , die gesucht werden müssen.

Standardwert: ""

Rückgaben

Die Instance gefunden.

FindFirstAncestorOfClass

Parallel schreiben

Gibt den ersten Vorfahren der Instance zurück, dessen Object.ClassName dem angegebenen Klassen gleich ist.

Diese Funktion funktioniert nach oben, d.h. sie beginnt bei der unmittelbaren Instanz Instance.Parent und arbeitet sich nach oben bis zur DataModel.Wenn kein passender Vorfahre gefunden wird, gibt er nil zurück.

Eine häufige Verwendung dieser Funktion ist die Feststellung, dass Model eine BasePart gehört. Zum Beispiel:


local model = part:FindFirstAncestorOfClass("Model")

Diese Funktion ist eine Variante von Instance:FindFirstAncestor(), die das Eigenschaft Object.ClassName überprüft, anstatt Instance.Name.Instance:FindFirstAncestorWhichIsA() existiert auch, verwendet die Methode Object:IsA() anstelle der Klassen-Erbschaft zu respektieren.

Parameter

className: string

Die Object.ClassName , die gesucht werden müssen.

Standardwert: ""

Rückgaben

Die Instance gefunden.

FindFirstAncestorWhichIsA

Parallel schreiben

Gibt den ersten Vorfahren der Instance für zurück, für den Object:IsA() wahr ist, für die angegebene Klasse.

Diese Funktion funktioniert nach oben, d.h. sie beginnt bei der unmittelbaren Instanz Instance.Parent und arbeitet sich nach oben bis zur DataModel.Wenn kein passender Vorfahre gefunden wird, gibt er nil zurück.

Im Gegensatz zu Instance:FindFirstAncestorOfClass() verwendet diese Funktion Object:IsA(), die die Klassen-Erbschaft respektiert. Zum Beispiel:


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

Daher wird das folgende Codebeispiel den ersten BasePart Vorfahren zurückgeben, unabhängig davon, ob es sich um einen WedgePart , MeshPart oder Part handelt.


local part = object:FindFirstAncestorWhichIsA("BasePart")

Siehe auch Instance:FindFirstAncestor().

Parameter

className: string

Die Object.ClassName , die gesucht werden müssen.

Standardwert: ""

Rückgaben

Die Instance gefunden.

FindFirstChild

Parallel schreiben

Gibt das erste Kind der Instance mit dem angegebenen Namen zurück oder nil wenn kein solches Kind existiert.Wenn das optionale recursive Argument true ist, sucht diese Funktion alle Nachkommen, anstatt nur die unmittelbaren Kinder des Instance .

Überprüfen der Existenz eines Objekts

FindFirstChild() ist erforderlich, wenn Sie überprüfen müssen, dass ein Objekt vor dem Fortfahren existiert.Wenn versucht wird, ein Kind mit dem Namen des Punktoпераators zu verzeichnen, wird ein Fehler ausgeworfen, wenn das Kind nicht existiert.


local Workspace = game:GetService("Workspace")
-- Die folgenden Fehlerzeilen, wenn das Teil nicht im Arbeitsbereich existiert
Workspace.Part.Transparency = 0.5

Ein besserer Ansatz ist die Verwendung von FindFirstChild(), um zuerst nach Part zu suchen, dann eine if-Anweisung zu verwenden, um Code auszuführen, der es benötigt.


local Workspace = game:GetService("Workspace")
local part = Workspace:FindFirstChild("Part")
if part then
part.Transparency = 0.5
end
Ein Kind finden, dessen Name ein Eigenschaft entspricht

Manchmal ist das Name eines Objekts dasselbe wie das einer Eigenschaft seiner Parent .Wenn der Dot-Operator verwendet wird, haben Eigenschaften den Vorrang vor Kindern, wenn sie einen Namen teilen.

Im folgenden Beispiel wird ein Folder mit dem Namen Color zu einem Part hinzugefügt, das auch die Eigenschaft Part.Color besitzt.Beachten Sie, dass part.Color sich auf den Color3 Eigenschaftswert bezieht, nicht auf die Kind-Folder Instanz.Ein Vorteil der Verwendung von FindFirstChild() ist, dass die Einführung neuer Eigenschaften kein Risiko für deinen Code darstellt.


local part = Instance.new("Part")
local folder = Instance.new("Folder")
folder.Name = "Color"
folder.Parent = part
local c1 = part.Color -- Die Eigenschaft
local c2 = part:FindFirstChild("Color") -- The child folder
Leistungsnotizen

FindFirstChild() dauert etwa 20% länger als die Verwendung des Dot-Operators und fast 8-mal länger als die einfache Speicherung einer Referenz auf ein Objekt.Daher solltest du es vermeiden, es in Leistungsabhängigem Code wie in engen Schleifen oder Funktionen, die mit und verbunden sind, aufzurufen.Stattdessen speichere das Ergebnis in einer Variable oder betrachte die Verwendung von ChildAdded oder WaitForChild(), um zu erkennen, wann ein Kind eines bestimmten Namens verfügbar wird.

Parameter

name: string

Das Instance.Name , das gesucht werden soll.

Standardwert: ""
recursive: boolean

Ob die Suche recursiv durchgeführt werden soll oder nicht.

Standardwert: false

Rückgaben

Die Instance gefunden.

Code-Beispiele

Das Folgende würde im Arbeitsbereich nach einem Objektnamen "Brick" suchen. Wenn es gefunden wird, wird der Name des Objekts in "Foo" geändert.

Instanz: FindFirstChild

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

FindFirstChildOfClass

Parallel schreiben

Gibt das erste Kind der Instance, deren ClassName dem gegebenen className gleich ist.Im Gegensatz zu Instance:FindFirstChildWhichIsA() gibt diese Funktion nur Objekte zurück, deren Klasse className entspricht, die Klassen-Erbschaft ignoriert.Wenn kein passendes Kind gefunden wird, gibt diese Funktion nil zurück.

Parameter

className: string

Die Object.ClassName , die gesucht werden müssen.

Standardwert: ""

Rückgaben

Die Instance gefunden.

Code-Beispiele

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

Parallel schreiben

Gibt das erste Kind der Instance für zurück, für die Object:IsA() wahr ist, für die angegebene Klasse.

Wenn kein passendes Kind gefunden wird, gibt diese Funktion nil zurück.Wenn das optionale rekursive Argument wahr ist, sucht diese Funktion alle Nachkommen, anstatt nur die unmittelbaren Kinder der Instance .

Im Gegensatz zu Instance:FindFirstChildOfClass() verwendet diese Funktion Object:IsA(), die die Klassen-Erbschaft respektiert. Zum Beispiel:


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

Daher wird das folgende Codebeispiel das erste BasePart -Kind zurückgeben, unabhängig davon, ob es ein WedgePart , MeshPart oder Part ist.


local part = object:FindFirstChildWhichIsA("BasePart")

Entwickler, die ein Kind nach Namen suchen, sollten stattdessen Instance:FindFirstChild() verwenden.

Parameter

className: string

Das Object.ClassName , das gesucht werden soll.

Standardwert: ""
recursive: boolean

Ob die Suche recursiv durchgeführt werden soll oder nicht.

Standardwert: false

Rückgaben

Die Instance gefunden.

FindFirstDescendant

Parallel schreiben

Gibt den ersten Nachkommen zurück, der mit dem angegebenen Instance.Name gefunden wurde.

Diese Methode ist deaktiviert und nicht verwendbar.Um den ersten Nachkommen einer Instanz zu finden, gilt es, stattdessen den recursive -Parameter auf Instance:FindFirstChild() zu verwenden.

Parameter

name: string
Standardwert: ""

Rückgaben

Die Instance gefunden.

GetActor

Parallel schreiben

Wenn das Instance ein Actor ist, wird das Actor selbst zurückgegeben.Ansonsten wird sein nächster Vorfahre Actor zurückgegeben.Wenn kein Vorfahre ein Actor ist, ist das Ergebnis nil .


Rückgaben

Die Actor gefunden.

GetAttribute

Variant
Parallel schreiben

Diese Methode gibt den Wert zurück, der dem angegebenen Attributnamen zugewiesen wurde. Wenn kein Attribut zugewiesen wurde, wird nil zurückgegeben.

Zum Beispiel legt das folgende Code-Snippet fest und holt dann den Wert des Attributes der Instanz InitialPosition:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)
Siehe auch

Parameter

attribute: string

Der Name des Attributs, das abgerufen wird.

Standardwert: ""

Rückgaben

Variant

Der Wert, der dem angegebenen Attributnamen zugewiesen wurde. Wenn kein Attribut zugewiesen wurde, wird nil zurückgegeben.

GetAttributeChangedSignal

Diese Funktion gibt ein Ereignis zurück, das sich genau wie das Ereignis Changed verhält, außer dass es nur dann feuert, wenn sich ein bestimmtes angegebenes Attribut ändert; effektiv ist es ähnlich wie GetPropertyChangedSignal() für Attribute.

Es ist im Allgemeinen eine gute Idee, diese Methode anstelle einer Verbindung zu Changed mit einer Funktion zu verwenden, die den Attributnamen überprüft.Subsequente Aufrufe dieser Methode auf demselben Objekt mit demselben Attributnamen geben das gleiche Ereignis zurück.

Das folgende Codebeispiel gibt ein Signal zurück, das die Funktion attributeChanged() auslöst, wenn sich der Attributswert der Teile InitialPosition ändert:


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)

Siehe auch Instance.AttributeChanged, das immer dann feuert, wenn ein Attribut auf der Instanz geändert wird.

Parameter

attribute: string

Der Name des angegebenen Attributes, für das das Änderungssignal zurückgegeben wird.

Standardwert: ""

Rückgaben

Ein Ereignis, das abgefeuert wird, wenn sich das angegebene Attribut ändert.

GetAttributes

Parallel schreiben

Diese Methode gibt ein Wörterbuch von Schlüssel-Wertpaaren für jedes Attribut zurück, bei dem der Schlüssel der Name des Attributes und der Wert ein nicht nil Wert ist.

Zum Beispiel gibt das folgende Code-Snippet Ausgaben mit Attributen und Werten einer Instanz aus:


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

Siehe auch Instance:GetAttribute(), die den Wert zurückgibt, der dem angegebenen Attributnamen zugewiesen wurde.


Rückgaben

Ein Wörterbuch von String → Variantenpaaren für jedes Attribut, bei dem der String der Name des Attributes ist und die Variante ein nicht-Null-Wert ist.

GetChildren

Instances
Parallel schreiben

Gibt ein Array (eine nummerisch indexierte Tabelle) zurück, das alle direkten Kinder der Instanz enthält oder jedes Instance, dessen Parent dem Objekt gleich ist.Die Liste kann mit einer numerischen oder generischen for-Schleife iteriert werden:


local Workspace = game:GetService("Workspace")
-- Zahlenspielschleifen-Beispiel
local children = Workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

local Workspace = game:GetService("Workspace")
-- Generisches for-Schleifen-Beispiel
local children = Workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

Die Kinder werden nach der Reihenfolge sortiert, in der ihr Parent Eigenschaft auf das Objekt festgelegt wurde.

Siehe auch die GetDescendants Funktion.


Rückgaben

Instances

Ein Array mit den Kindern der Instanz.

Code-Beispiele

The below would print the name of all objects currently in Workspace when ran.

Instance:GetChildren

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

GetDebugId

Nicht durchsuchbar
Plugin-Sicherheit

Gibt eine kodierte Zeichenkette der Fehler-ID zurück, die von Roblox intern verwendet wird. Beachten Sie:

  • Dieser Gegenstand ist geschützt. Wenn du ihn in einem Script oder LocalScript verwenden möchtest, tritt ein Fehler auf.
  • Eine Debug-ID ist eine ID, die in Debugging-Prozessen verwendet wird.Es ermöglicht einem Debugger, jede Anweisung vor dem Ausführen durch eine Anwendung zu lesen.Alle Objekte in Roblox agieren wie Prozesse und jede Ausführungsanweisung (oder "Code"), die bei Bedarf debugged werden kann.
  • Dies kann für Plugins hilfreich sein, die ähnliche Objekte voneinander unterscheiden müssen (z. B. Objekte, die denselben Namen teilen).

Parameter

scopeLength: number

Die Länge des Bereichs.

Standardwert: 4

Rückgaben

Die Debug-ID-Schnur.

Code-Beispiele

Instance:GetDebugId

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

GetDescendants

Parallel schreiben

Diese Objekt-Methode gibt eine Liste zurück, die alle Nachkommen dieses Objekts enthält.Im Gegensatz zu Instance:GetChildren(), die nur die unmittelbaren Kinder eines Objekts zurückgibt, findet diese Methode jedes Kind des Objekts, jedes Kind dieser Kinder und so weiter.


Rückgaben

Ein Array mit den Nachkommen der Instanz.

Code-Beispiele

GetDescendants is often used to do something to all the descendants that are a particular type of object. The code in this example uses GetDescendants and Instance:IsA() to find all of the parts in the workspace and turns them green.

Instance:GetDescendants

local descendants = workspace:GetDescendants()
-- Loop through all of the descendants of the Workspace. If a
-- BasePart is found, the code changes that parts color to green
for _, descendant in pairs(descendants) do
if descendant:IsA("BasePart") then
descendant.BrickColor = BrickColor.Green()
end
end

GetFullName

Parallel schreiben

Gibt eine Zeichenkette zurück, die die Vorfahren der Instanz beschreibt.Die Zeichenkette ist eine Konkatenation des Name des Objekts und seiner Vorfahren, getrennt durch Zeichenstriche.Die DataModel ( game ) wird nicht berücksichtigt.Zum Beispiel kann ein Part in der Workspace möglicherweise Workspace.Part zurückgeben.

Wenn auf einem Instance aufgerufen wird, das kein Nachkomme des DataModel ist, betrachtet diese Funktion alle Vorfahren bis zum obersten ohne Parent.

Diese Funktion ist nützlich für Loggen und Debuggen.Du solltest nicht versuchen, die zurückgegebene Zeichenkette für eine nützliche Operation zu analysieren; diese Funktion entkommt nicht den Perioden (oder anderen Symbolen) in Objektnamen.Mit anderen Worten, obwohl seine Ausgabe oft wie ein gültiger Luau-Identifikator aussieht, ist sie nicht garantiert.


Rückgaben

Der volle Name des Instance.

Code-Beispiele

This code sample demonstrates the behavior of Instance:GetFullName(). It shows how the function behaves when called on an object not in the DataModel hierarchy, and it also shows how the return value does not escape special characters.

Instance:GetFullName

-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire

This code sample re-implements the Instance:GetFullName() function in Lua.

Instance:GetFullName Lua Implementation

local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera

GetStyled

Variant

Diese Methode gibt den gestilten oder explizit modifizierten Wert der angegebenen Eigenschaft zurück, oder sonst den Standard-Eigenschaftswert, wenn er nicht gestylt/modifiziert wurde.Dies unterscheidet sich leicht vom Zugriff auf den Eigenschaftswert direkt, wie [GuiObject].Rotation, der den Standard- oder modifizierten Wert der Eigenschaft zurückgibt.


local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local coreSheet = ReplicatedStorage:FindFirstChild("CoreSheet")
local rule = coreSheet:FindFirstChildWhichIsA("StyleRule")
rule.Selector = "TextButton"
-- Verweis auf eine Schaltfläche
local button = HUDContainer:FindFirstChildWhichIsA("TextButton")
print(button:GetStyled("Rotation")) --> 0 (standardwert)
print(button.Rotation) --> 0 (standardwert)
-- Drehung durch Style-Regel-Eigenschaft anwenden
rule:SetProperty("Rotation", 30)
print(button:GetStyled("Rotation")) --> 30 (stylisher wert basierend auf regel)
print(button.Rotation) --> 0 (standardwert)
-- Stilgebundene Eigenschaft explizit modifizieren/überschreiben
button.Rotation = 45
print(button:GetStyled("Rotation")) --> 45 (modifizierter wert)
print(button.Rotation) --> 45 (modified value)

Parameter

name: string

Name der zu fragenden Eigenschaft.

Standardwert: ""

Rückgaben

Variant

Der gestylte oder explizit modifizierte Wert der angegebenen Eigenschaft oder alternativ der Standard-Eigenschaftswert, wenn er nicht gestylt/modifiziert wurde.

GetStyledPropertyChangedSignal

Diese Methode gibt ein Ereignis zurück, das sich genau wie das Ereignis StyledPropertiesChanged verhält, außer dass es nur dann feuert, wenn die angegebene Stileigenschaft geändert wird.Es ist im Allgemeinen eine gute Idee, diese Methode anstelle einer Verbindung zu StyledPropertiesChanged mit einer Funktion zu verwenden, die den Namen der Eigenschaft überprüft.Subsequente Aufrufe dieser Methode auf demselben Objekt mit demselben Eigenschaftsnamen geben das gleiche Ereignis zurück.

Beachten Sie, dass dieses Ereignis keine Argumente an eine verbundene Funktion übergeben wird, so muss der Wert der geänderten Eigenschaft direkt innerhalb eines Skripts gelesen werden.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local meterBar = HUDContainer.MeterBar
local function stylePropertyChanged()
print("Style property changed!")
end
meterBar:GetStyledPropertyChangedSignal("AnchorPoint"):Connect(stylePropertyChanged)

Parameter

property: string

Name der Stil属ität, für die Änderungen zu hören sind.

Standardwert: ""

Rückgaben

Ereignis, das abgefeuert wird, wenn sich die angegebene Stil-Eigenschaft ändert.

GetTags

Parallel schreiben

Diese Methode gibt eine Reihe der auf die angegebene Instanz angewendeten Tags als Zeichen zurück.Du kannst Tags entweder im Studio-Fenster Eigenschaften hinzufügen oder zur Laufzeit mit AddTag() .

Diese Methode ist nützlich, wenn du etwas mit mehreren Tags auf einer Instanz auf einmal tun möchtest.Es ist jedoch ineffizient, diese Methode zu verwenden, um nach der Existenz eines einzelnen Tags zu suchen; stattdessen verwende HasTag(), um nach einem bestimmten Tag zu suchen.


Rückgaben

HasTag

Parallel schreiben

Diese Methode gibt true zurück, wenn der angegebene Tag dem Objekt hinzugefügt wurde.Du kannst Tags entweder im Studio-Fenster Eigenschaften hinzufügen oder zur Laufzeit mit AddTag() .

Parameter

tag: string
Standardwert: ""

Rückgaben

IsAncestorOf

Parallel schreiben

Gibt wahr zurück, wenn ein Instance ein Vorfahrt des angegebenen Nachkommens ist.

Ein Instance wird als Vorfahre eines Objekts betrachtet, wenn das Objekt seine Instance.Parent oder eines seiner Eltern Instance.Parent auf die Instance festlegt.

Siehe auch, Instance:IsDescendantOf() .

Parameter

descendant: Instance

Der Nachkomme Instance .

Standardwert: ""

Rückgaben

Wahr, wenn das Instance ein Vorfahre des angegebenen Nachkommens ist.

Code-Beispiele

Demonstrates determining if one instance is the ancestor of another using Instance:IsAncestorOf()

Workspace and SpawnLocation are ancestors of the SpawnLocation's decal. Workspace is an ancestor of SpawnLocation.

SpawnLocation and its decal are descendants of Workspace, not ancenstors. Decal is a descendant to SpawnLocation, not an ancestor.

Instance:IsAncestorOf()

local Workspace = game:GetService("Workspace")
local spawnLocation = Workspace.SpawnLocation
local decal = spawnLocation.Decal
-- These statements are true
print(Workspace:IsAncestorOf(spawnLocation))
print(Workspace:IsAncestorOf(decal))
print(spawnLocation:IsAncestorOf(decal))
-- These statements are false
print(spawnLocation:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(spawnLocation))

IsDescendantOf

Parallel schreiben

Gibt true zurück, wenn ein Instance ein Nachkomme des angegebenen Vorfahren ist.

Beachten Sie, dass IsDescendantOf() nicht mit einem Parameter von nil verwendet werden kann, um zu überprüfen, ob ein Objekt entfernt wurde.

Siehe auch Instance:IsAncestorOf().

Parameter

ancestor: Instance

Der Vorfahre Instance.

Standardwert: ""

Rückgaben

Wahr, wenn das Instance ein Nachkomme des angegebenen Vorfahren ist.

Code-Beispiele

Instanz: IstDescendantOf

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

IsPropertyModified

Gibt true zurück, wenn der in der angegebenen Eigenschaft gespeicherte Wert dem Code-instanzierten Standard gleich ist.Wenn zum Beispiel die Ausgabe der Eigenschaft von einem den Wert anzeigt, wird die Aufrufung von auf dem Etikett die Rückgabe von erzielen, weil der Standardwert für ist, wenn das Etikett über die Studio-Eingabe-Workflows erstellt wird, anstatt durch die Einfügung durch die Studio-Eingabe-Workflows eingefügt zu werden.

Beachten Sie, dass, wenn diese Methode true zurückgibt, das Styling nicht die Eigenschaft beeinflussen wird, da die explizite Änderung einer Eigenschaft dem Styling vorzuziehen ist.

Parameter

property: string

Name der zu fragenden Eigenschaft.

Standardwert: ""

Rückgaben

Boolean, der anzeigt, ob die Eigenschaft modifiziert wurde.

RemoveTag

()

Diese Methode entfernt ein Tag von einer Instanz.Es wird keine Fehler werfen, wenn das Objekt kein Tag hat.Die erfolgreiche Entfernung eines Tags schaltet ein Signal ab, das von CollectionService:GetInstanceRemovedSignal() mit dem angegebenen Tag erstellt wurde.

Beachten Sie, dass es üblich ist, dass einige Ressourcen verwendet werden, um dem Tag seine Funktionalität zu geben, zum Beispiel Verbindungen zu Ereignissen oder Tabellen.Um Speicherlecks zu verhindern, ist es eine gute Idee, diese zu löschen (verbinden Sie sich ab, stellen Sie auf nil ein usw.), wenn sie für einen Tag nicht mehr benötigt werden.

Parameter

tag: string
Standardwert: ""

Rückgaben

()

ResetPropertyToDefault

()

Setzt ein Eigenschaft auf ihren Standardwert zurück.Zum Beispiel ist das Aufrufen von ResetPropertyToDefault("Rotation") auf einem TextLabel gleichbedeutend mit dem Festlegen seiner Rotation auf 0 (der Standardwert der Eigenschaft).Diese Methode kann verwendet werden, um sicherzustellen, dass das Styling den Standardwert dieser Eigenschaft überschreibt.

Parameter

property: string

Name der zu zurücksetzenden Eigenschaft.

Standardwert: ""

Rückgaben

()

SetAttribute

()

Diese Methode legt das Attribut mit dem angegebenen Namen auf den angegebenen Wert fest.Wenn der angegebene Wert nil ist, wird das Attribut entfernt, da nil standardmäßig zurückgegeben wird.

Zum Beispiel legt das folgende Code-Snippet das Attribut der Instanz InitialPosition auf Vector3.new(0, 10, 0) fest:


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

Namensanforderungen und Einschränkungen:

  • Namen dürfen nur alphanumerische Zeichen und Unterstrich verwenden.
  • Keine Leerstellen oder einzigartigen Symbole sind erlaubt.
  • Schnüre müssen 100 Zeichen oder weniger sein.
  • Namen dürfen nicht mit RBX beginnen, es sei denn, der Anrufer ist ein Roblox-Kernskript (reserviert für Roblox).

Wenn versucht wird, ein Attribut auf einen nicht unterstützten Typ zu setzen, wird ein Fehler geworfen.

Siehe auch

Parameter

attribute: string

Der Name des Attributs, das festgelegt wird.

Standardwert: ""
value: Variant

Der Wert, mit dem das angegebene Attribut festgelegt wird.

Standardwert: ""

Rückgaben

()

WaitForChild

Kann anhalten

Gibt das Kind der Instance mit dem angegebenen Namen zurück.Wenn das Kind nicht existiert, wird es den aktuellen Thread ergeben, bis es es tut.Wenn der timeOut -Parameter angegeben wird, läuft diese Methode nach der angegebenen Anzahl von Sekunden ab und gibt nil zurück.

Primäre Verwendung

WaitForChild() ist extrem wichtig, wenn Sie an Code arbeiten, der vom Client in einem LocalScript ausgeführt wird.Die Roblox-Engine garantiert nicht die Reihenfolge oder die Zeit, in der Objekte vom Server zum Client repliziert werden.Zusätzlich, wenn ein Erlebnis auf Wahr gesetzt ist Workspace.StreamingEnabled, können BaseParts nicht zum Client gestreamt werden, die weit weg vom Charakter des Spielers sind, was dazu führen kann, dass Skripte beim Indexieren von Objekten, die auf dem Client noch nicht existieren, beschädigt werden.

Anmerkungen
  • Diese Funktion gibt nicht aus, wenn ein Kind mit dem angegebenen Namen existiert, wenn die Anruf getätigt wird.
  • Instance:FindFirstChild() ist eine effizientere alternative zu WaitForChild() für objekte, die vermutet werden.
  • Wenn ein Anruf bei dieser Methode mehr als 5 Sekunden überschreitet, ohne zurückzukehren, und kein timeOut-Parameter angegeben wurde, wird eine Warnung gedruckt, dass der Thread ununterbrochen ausgegeben werden kann.

Parameter

childName: string

Die Instance.Name , die gesucht werden müssen.

Standardwert: ""
timeOut: number

Ein optioneller Timeout-Parameter.

Standardwert: ""

Rückgaben

Die Instance gefunden.

Code-Beispiele

The following code waits for an instance named "Part" to be added to Workspace.

Instance:WaitForChild

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

Ereignisse

AncestryChanged

Feuert, wenn die Instance.Parent Eigenschaft des Objekts oder eine seiner Vorfahren geändert wird.

Dieses Ereignis enthält zwei Parameter: child bezieht sich auf die Instance , deren Instance.Parent tatsächlich geändert wurde, während parent sich auf die neue Instanz von Instance.Parent bezieht.

Du kannst dieses Ereignis verwenden, um die Löschung einer Instanz in Studio zu verfolgen, z. B. manuelle Löschung im Explorer oder durch ein Plugin.Wenn du feststellen musst, wann eine Instanz mit Instance:Destroy() zerstört wird, verwende stattdessen das Instance.Destroying -Ereignis.

Parameter

child: Instance

Die Instance, deren Instance.Parent geändert wurde.

parent: Instance

Das neue Instance.Parent der Instance, dessen Instance.Parent geändert wurde.


Code-Beispiele

Demonstrates detecting changes to an instance's ancestry by connecting to the Instance.AncestryChanged event.

The ChangingPart's Parent is set to different values overtime. The parent of the part is the part's ancestor, so the Instance.AncestryChanged event will fire whenever it changes.

Instance.AncestryChanged

local Workspace = game:GetService("Workspace")
local redPart = script.Parent.RedPart
local bluePart = script.Parent.BluePart
local changingPart = script.Parent.ChangingPart
-- Change the color of changingPart based on it's Parent
local function onAncestryChanged(part: Part, parent: Instance)
if parent == redPart then
changingPart.Color = Color3.new(1, 0, 0)
elseif parent == bluePart then
changingPart.Color = Color3.new(0, 0, 1)
else
changingPart.Color = Color3.new(1, 1, 1)
end
print(`{part.Name} is now parented to {parent.Name}`)
end
changingPart.AncestryChanged:Connect(onAncestryChanged)
-- Set changingPart's Parent property to different instances over time
while true do
task.wait(2)
changingPart.Parent = redPart
task.wait(2)
changingPart.Parent = bluePart
task.wait(2)
changingPart.Parent = Workspace
end

AttributeChanged

Dieses Ereignis wird immer dann ausgelöst, wenn ein Attribut auf der Instanz geändert wird, einschließlich dann, wenn ein Attribut auf nil gesetzt wird.Der Name des geänderten Attributes wird an die verbundene Funktion übergeben.

Zum Beispiel verbindet das folgende Code-Snippet die attributeChanged()-Funktion, die immer dann abgefeuert wird, wenn eines der Attributen des Teils geändert wird:


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

Siehe auch Instance:GetAttributeChangedSignal(), das ein Ereignis zurückgibt, das abgefeuert wird, wenn ein bestimmtes gegebenes Attribut geändert wird.

Parameter

attribute: string

Der Name des Attributs, das geändert wurde.


ChildAdded

Feuert nachdem ein Objekt diesem Instance zugewiesen wurde.

Beachten Sie, wenn Sie diese Funktion auf einem Client verwenden, um Objekte, die vom Server erstellt wurden, zu erkennen, ist es notwendig, Instance:WaitForChild() zu verwenden, wenn Sie die Nachkommen dieser Objekte indexieren.Das liegt daran, dass das Objekt und seine Nachkommen nicht garantiert werden, gleichzeitig vom Server auf den Client zu replizieren.Zum Beispiel:


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)

Beachten Sie, dass diese Funktion nur für unmittelbare Kinder des Instance funktioniert. Für eine Funktion, die alle Nachkommen einfängt, verwenden Sie Instance.DescendantAdded .

Siehe auch Instance.ChildRemoved.

Parameter

child: Instance

Das Instance, das hinzugefügt wurde.


Code-Beispiele

This snippet prints the names of objects as they are added to the Workspace:

Instance.ChildAdded

local function onChildAdded(instance)
print(instance.Name .. " added to the workspace")
end
workspace.ChildAdded:Connect(onChildAdded)
local part = Instance.new("Part")
part.Parent = workspace --> Part added to the Workspace

ChildRemoved

Feuert nachdem ein Kind von diesem Instance entfernt wurde.

Entfernt bezieht sich darauf, wenn der Eltern eines Objekts von diesem Instance auf etwas anderes geändert wird als dies Instance.Beachten Sie, dass dieses Ereignis auch ausgelöst wird, wenn ein Kind zerstört wird (unter Verwendung von Instance:Destroy() ), da die Zerstörungsfunktion den Eltern eines Objekts auf nil festlegt.

Diese Funktion funktioniert nur für unmittelbare Kinder des Instance. Für eine Funktion, die alle Nachkommen erfasst, verwende Instance.DescendantRemoving .

Siehe auch Instance.ChildAdded.

Parameter

child: Instance

Das Instance, das entfernt wurde.


Code-Beispiele

This snippet prints the names of objects as they are removed from the Workspace:

Instance.ChildRemoved

local function onChildRemoved(instance)
print(instance.Name .. " removed from the workspace")
end
workspace.ChildRemoved:Connect(onChildRemoved)
local part = Instance.new("Part")
part.Parent = workspace
task.wait(2)
part:Destroy()

DescendantAdded

Dieses Ereignis wird ausgelöst, nachdem ein Abkömmling dem Instance hinzugefügt wurde.

Da es für jeden Nachkommen feuert, wird das Eltern eines Objekts für dieses Objekt und alle seine Nachkommen einzeln das Ereignis auslösen.

Wenn Sie sich nur um die direkten Kinder der Instance kümmern, verwenden Sie stattdessen Instance.ChildAdded.

Siehe auch Instance.DescendantRemoving.

Parameter

descendant: Instance

Das Instance, das hinzugefügt wurde.


Code-Beispiele

Das folgende Beispiel druckt den Namen eines jeden Objekts aus, das zum Arbeitsbereich hinzugefügt wird:

Instanz.DescendantAdded

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

DescendantRemoving

Dieses Ereignis wird sofort vor dem Eltern-Instance ausgelöst, sodass eine Nachkomme-Instanz nicht mehr eine Nachkomme ist. Destroy() ändert eine Instanz' Parent zu nil, so dass das Aufrufen dieser Methode auf einem Nachkommen des Vaters dazu führt, dass dieses Ereignis ausgelöst wird.

Da dieses Ereignis vor dem Entfernen des Nachkommens feuert, bleibt der Elternteil des Nachkommens bei der Zeit des Feuern dieses Ereignisses unverändert.Wenn der Nachkomme auch ein direktes Kind des Elternteils ist, wird dieses Ereignis vor abgefeuert.

Wenn ein Nachkomme Kinder hat, feuert dieses Ereignis zuerst mit dem Nachkommen, gefolgt von seinen Nachkommen.

Warnung

Dieses Ereignis wird mit dem abstehenden Objekt abgefeuert, das entfernt wird.Versuche, die Parent des Nachkommen auf etwas anderes zu setzen, werden fehlschlagen.Das folgende Beispiel zeigt dies:


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

Siehe auch DescendantAdded.

Parameter

descendant: Instance

Das Instance, das entfernt wird.


Code-Beispiele

The following example prints the name of any descendant as it is being removed from the Workspace:

Instance.DescendantRemoving

workspace.DescendantRemoving:Connect(function(descendant)
print(descendant.Name .. " is currently parented to " .. tostring(descendant.Parent))
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
--> Part is currently parented to Workspace
print(part.Parent)
--> nil

Destroying

Die Instance wird niemals aus dem Speicher gelöscht, während eine verbundene Funktion sie noch verwendet.Wenn die Funktion jedoch an einem beliebigen Punkt aufgibt, werden die Instance und ihre Nachkommen zu nil übernommen.

Wenn die Eigenschaft Workspace.SignalBehavior auf Enum.SignalBehavior.Immediate gesetzt ist, wird dieses Ereignis sofort ausgelöst, bevor die Instance oder einer ihrer Vorfahren mit Instance:Destroy() zerstört werden.

Wenn die Eigenschaft Workspace.SignalBehavior auf Enum.SignalBehavior.Deferred gesetzt ist, wird dieses Ereignis am nächsten Wiederaufnahmepunkt ausgelöst, der passieren wird, nachdem der Instance oder einer seiner Vorfahren mit Instance:Destroy() zerstört wurde.

Mit dem Deferred, ein Skript mit seinem eigenen Instance.Destroying zu verbinden, ist problematisch, da das Skript vor dem Aufruf des Rückrufs zerstört wird (was bedeutet, dass es nicht ausgeführt wird).

Wenn du ein Instance in Studio löschst, z. B. manuell durch den Explorer oder durch ein Plugin, wird das Instance nicht zerstört.Stattdessen wird der Elternteil auf nil festgelegt, die Sie mit Instance.AncestryChanged verfolgen können.


Code-Beispiele

This sample demonstrates how, when using Immediate signal behavior, an Instance being destroyed remains in place until the connected function yields.

Using the Destroying Event (Immediate signals)

local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()

This sample demonstrates how, when using Deferred signal behavior, an Instance is destroyed before the signal fires.

Using the Destroying Event (Deferred signals)

local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())

StyledPropertiesChanged

Dieses Ereignis wird immer dann ausgelöst, wenn eine Style-Eigenschaft auf der Instanz geändert wird, einschließlich dann, wenn eine Eigenschaft auf nil gesetzt wird.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local HUDContainer = playerGui:WaitForChild("HUDContainer")
local meterBar = HUDContainer.MeterBar
local function stylePropertyChanged()
print("Styled properties changed")
end
meterBar:StyledPropertiesChanged():Connect(stylePropertyChanged)