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

Die Instanz ist die Basisklasse für alle Klassen in der Roblox-Klassen-Hierarchie, die Teil des Datenmodells-Baums sein können. Es ist nicht möglich, direkt auf Instanz-Objekte zu erstellen.

Die Instanz hat eine spezielle Funktion namens Instance.new(), die verwendet wird, um Objekte über Codeszu erstellen. Diese Funktion nimmt den Namen der Klasse als Parameter zurück und gibt das erstellte Objekt zurück. Abstrakte Klassen und Dienste können nicht mit der Funktion Instanz.new erstellt werden.

Zusammenfassung

Eigenschaften

  • Parallel lesen

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

  • Capabilities:SecurityCapabilities
    Parallel lesen

    Die Reihe von Fähigkeiten, die für Skripte innerhalb dieses Containers verwendet werden können.

  • Parallel lesen

    Eine nicht eindeutige Kennung der Instance.

  • Nicht repliziert
    Parallel lesen

    Bestimmt den hierarchischen Elternteil der Instance.

  • Verborgen
    Parallel lesen
    Veraltet

    Eine veraltete Eigenschaft, die ursprünglich CoreGui Objekte schützte.

  • Nicht repliziert
    Parallel lesen

    Versandelt die Instanz in einen Sandbox-Container.

  • UniqueId:UniqueId
    Nicht repliziert
    Nicht skriptfähig
    Parallel lesen

Methoden

Ereignisse

Eigenschaften

Archivable

Parallel lesen

Dieses Eigenschaft bestimmt, ob die Instanz enthalten sein soll, wenn die Erfahrung veröffentlicht oder gespeichert wird, oder wenn Clone() auf einen der Vorfahren der Instanz aufgerufen wird. Wenn Sie Clone() direkt auf eine Instanz aufrufen, wird nil

Die Kopierung eines Objekts in Studio mit den <a href="https://www.studio.com/archiv">Duplikat\ oder <a href="https://www.studio.com/coppy">Kopieren\ / <a href="https://www.studio.com/paste">Einfügen\ Optionen ignorieren seine eigene <a href="https://www.studio.com/archiv">Class.Instance.Archivable|Archivable\ E


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

Capabilities

SecurityCapabilities
Parallel lesen
Roblox-Skript-Sicherheit

Die Set von Fähigkeiten, die für Skripte innerhalb dieser Instanz verwendet werden können. Um die Fähigkeiten zu aktivieren, muss Instance.Sandboxed Eigenschaft aktiviert sein.

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

Name

Parallel lesen

Eine nicht eindeutige Kennung der Instance.

Dieses Eigenschaft ist ein Identifikator, der ein Objekt beschreibt. Namen sind nicht unbedingt einzigartige Identifikatoren; jedoch können mehrere Kinder eines Objekts den gleichen Namen teilen. Namen werden verwendet, um die Objekt-Hierarchie organisiert zu halten, zusammen mit der Möglichkeit, Skripte auf bestimmte Objekte zuzugreifen. Die Name einer Instanz kann nicht mehr als 100 Zeichen lang sein.

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


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

Um ein Objekt mit dem Punktbetreiber zu verknüpfen, muss der Name eines Objekts eine bestimmte Syntax folgen. Der Name des Objekts muss mit einem Unterstrich oder einem Buchstaben beginnen. Der Rest des Namens kann nur Buchstaben, Zahlen oder Unterstriche enthalten (keine anderen Zeichen). Wenn der Name eines Objekts diese Syntax nicht folgt, ist es mit dem Punktbetreiber nicht verknüpfbar und Lua wird sein Name nicht als Identifikator interpretieren.

Wenn mehr als ein Objekt mit demselben Namen als Bruder oder Schwester ist, wird jede Versuche, ein Objekt durch diesen Namen zu indizieren, das einzigartige Objekt der Objek, die ähnlich wie Instance:FindFirstChild() , aber nicht immer das gewünschte Objekt zurückgeben, wenn ein bestimmtes Objekt über Code zugänglich ist. Wenn ein bestimmtes Objekt durch Code zugänglich ist, wird empfohlen, ihm einen einzigartigen Namen zu geben, oder zu garantieren,

Beachten Sie, dass ein vollständiger Name mit der Hierarchie der Instanz Instance:GetFullName() verwendet werden kann.

Parent

Nicht repliziert
Parallel lesen

Die Eltern-Eigenschaft bestimmt den hierarchischen Elternteil der Instance. Die folgende Terminologie wird häufig verwendet, wenn es darum geht, wie diese Eigenschaft festlegenwird:

  • Ein Objekt ist ein Kind ( mit dem Elternteil setzt ) ein anderes Objekt, wenn sein Elternteil auf dieses Objekt eingestellt ist.
  • Die Nachkommen eines Instance sind die Kinder dieses Objekts, plus die Nachkommen der Kinder auch.
  • Die Vorfahren eines Instance sind alle Objekte, von denen die Instanz ein Nachkommen ist.

Von dieser Eigenschaft erhalten viele andere API-Mitglieder ihren Namen, wie z. B. GetChildren und FindFirstChild.

Die Funktion Remove setzt diese Eigenschaft auf null. Wenn Sie Destroy rufen, wird die Elternfigur eines zerstörten Objekts und alle seine Nachkommen auf Instance festgelegt, und auch 2>lock2> die Eigenschaften. Ein Fehler wird beim Festlegen der Elternfigur eines zerstör

Diese Eigenschaft wird auch verwendet, um zu verwalten, ob ein Objekt im Spiel existiert oder entfernt werden muss. Solange ein Objekt in einem DataModel Elternteil ist, wird es in einer Variable gespeichert, oder ist durch eine andere Objekt-Eigenschaft referenziert, dann bleibt das Objekt im Spiel. Andernfalls

Neu erstellte Objekte mit Instance.new() werden keinen Elternteil haben und werden normalerweise nicht sichtbar sein oder funktionieren, bis ein Elternteil festlegenist. Die grundlegendste Schaffung eines Objekts hat zwei Schritte: das Erstellen des Objekts und dann das Festlegen seines übergeordnetes Teil.


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

Wenn eine Änderung an bestimmten Eigenschaften vorgenommen wird, während ein Instanz in der DataModel mit Eltern verbunden ist, muss der Engine möglicherweise zusätzliche Arbeit intern ausführen (z. B. für Dinge wie Replikation, Rendern und GUI-Layouter). Wenn möglich, ändern Sie die Eigenschaften einer Instanz vor Sie setzen Ihrer Eltern, anstatt nach, um diese Arbeit nicht redundant auszuführen.

Objekt-Replikation

Ein von dem Server erstelltes Objekt wird nicht auf Clients repliziert, bis es mit einem bestimmten Objekt verbunden ist, das repliziert wird. Wenn Sie ein Objekt erstellen und dann viele Eigenschaften festlegen, wird empfohlen, Parent last zu setzen . Dies gewährleistet, dass das Objekt einmal repliziert wird, anstatt viele Eigenschaftsänderungen zu replizieren.


local part = Instance.new("Part") -- Vermeiden Sie hier den zweiten Parallelberechnungsparameter
part.Anchored = true
part.BrickColor = BrickColor.new("Really red")
-- Viele andere Eigenschaftsänderungen könnten hier hier...
-- Immer das Parent setzen letzter!
part.Parent = workspace

Wenn Sie jedoch Ihre Teile zu einem Model einschließlich dessen Eltern noch nicht festgelegt waren, ist das Elternzeit für jedes Teil in diesem Modell okay, da das Modell noch nicht repliziert wurde.

RobloxLocked

Verborgen
Parallel lesen
Plugin-Sicherheit

Dieses Eigenschaft wird verwendet, um Objekte im CoreGui Dienst vor Benutzern unautorisiert zu ändern zu schützen. Es wurde deprecated und tut nichts.

Sandboxed

Nicht repliziert
Parallel lesen
Roblox-Skript-Sicherheit

Transformiert die Instanz in einen Sandbox-Container. Sandbox-Container sind eine experimentelle Funktion, die die Aktionen beschränkt, die Skripte in einem bestimmten Container ausführen können.

Siehe Skript-Fähigkeiten Seite für weitere Details.

UniqueId

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

Methoden

AddTag

void

Diese Methode fügt dem Instanz ein Tag hinzu, mit keinem Effekt, wenn das Tag bereits angewendet ist. Der Erfolg des Hinzufügens eines Tags wird mit dem von CollectionService:GetInstanceAddedSignal() mit dem angegebenen Tag feuern.

Beachten Sie, dass, wenn Sie eine Instanz markieren, es üblich ist, dass einige Ressourcen verwendet werden, um der Tag seine Funktionalität zu geben, z. B. Ereignisverbindungen oder Tabellen. Um den Speicherplatz zu verhindern, ist es eine gute Idee, diese zu löschen (verbinden, auf

Parameter

tag: string

Rückgaben

void

ClearAllChildren

void

Diese Funktion zerstört alle Kinder einer Instanz.

Als Instance:Destroy() nennt sich auch auf die Kinder eines Objekts, auf dem es verwendet wird, diese Funktion zerstört alle Nachkommen.

Alternativen zu ClearAllChildren

Wenn der Entwickler nicht alle Nachkommen zerstören möchte, sollte er Instance:GetChildren() oder Instance:GetDescendants() verwenden, um durch ein Objekt zu durchlaufen und auszuwählen, was zerstört werden soll. Zum Beispiel wird der folgende Codebeispiel alle Teile in einem Objekt zerstören.


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

Rückgaben

void

Code-Beispiele

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

Klonieren erstellt eine Kopie einer Instanz und all ihrer Nachkommen, unabhängig von allen Instanzen, die nicht Class.Instance.Archivable|Archivable sind. Die Kopie der Wurzelinstanz wird von dieser Methode

Wenn ein Verweisungseigenschaft wie ObjectValue.Value in einer geklonten Instanz festgelegt ist, hängt der Wert der Kopie-Eigenschaft von dem Wert des Originales ab:

  • Wenn eine Verweisungseigenschaft auf eine Instanz verweist, die auch kloniert wurde, wird die Kopie auf die Kopie verwiesen.
  • Wenn eine Verweisungseigenschaft auf ein Objekt verweist, das nicht geklont wurde, wird der gleiche Wert in der Kopie aufrechterhalten.

Rückgaben

Code-Beispiele

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

Setzt die Instance.Parent-Eigenschaft auf null, sperrt die Class.Instance.ParentEigenschaften, verbindet alle Verbindungen und ruft Zerstören auf alle Kinder. Diese Funktion ist der richtige Weg, um unnötige Objekte zu entsorgen. Unnötige Objekte und Verbindungen in einem Ort verbrauchen Memória (dies ist

Tipp: Nach dem Aufrufen von Destroy auf einem Objekt setzen Sie alle Variablen, die auf das Objekt (oder seine Nachkommen) referieren, auf null. Dies verhindert, dass Ihr Code auf irgendetwas mit dem Objekt zugreift.


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

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


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

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


Rückgaben

void

Code-Beispiele

Instance:Destroy()

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

FindFirstAncestor

Parallel schreiben

Gibt den ersten Vorgänger der Instance, dessen Instance.Name der angegebene Name entspricht.

Diese Funktion arbeitet nach oben, was bedeutet, dass sie bei der sofortigen Instance.Parent der Instanz beginnt und nach dem DataModel arbeitet. Wenn kein entsprechender Vorgänger gefunden wird, gibt es null zurück.

Das folgende Code-Snippet würde den ersten Vorgänger des Objekts "Auto" finden.


local car = object:FindFirstAncestor("Car")

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

Parameter

name: string

Der Instance.Name wird gesucht.


Rückgaben

Die Instance gefunden.

FindFirstAncestorOfClass

Parallel schreiben

Gibt den ersten Vorgänger der Instance, dessen Object.ClassName der angegebene Namenraum entspricht.

Diese Funktion arbeitet nach oben, was bedeutet, dass sie bei der sofortigen Instance.Parent der Instanz beginnt und nach dem DataModel arbeitet. Wenn kein entsprechender Vorgänger gefunden wird, gibt es null zurück.

Eine häufige Verwendung dieser Funktion ist, den Model mit dem BasePart zu finden, der ihm gehört. Zum Beispiel:


local model = part:FindFirstAncestorOfClass("Model")

Diese Funktion ist eine Variiante von Instance:FindFirstAncestor() , die die Object.ClassName -Eigenschaft überprüft, anstatt Instance.Name. 1> Class.Instance:FindFirstAncestorWhichIsA() existiert auch, indem die Methode4> Class.Object:IsA()4>

Parameter

className: string

Die Object.ClassName zu suchen.


Rückgaben

Die Instance gefunden.

FindFirstAncestorWhichIsA

Parallel schreiben

Gibt den ersten Vorgänger der Instance für den, für den Object:IsA() wahr ist für den angegebenen Namen.

Diese Funktion arbeitet nach oben, was bedeutet, dass sie bei der sofortigen Instance.Parent der Instanz beginnt und nach dem DataModel arbeitet. Wenn kein entsprechender Vorgänger gefunden wird, gibt es null zurück.

Anders als Instance:FindFirstAncestorOfClass() , verwendet diese Funktion Object:IsA(), was die Erbvererbung der Klasse 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 Vorgänger zurückgeben, unabhängig davon, ob es sich um einen WedgePart , MeshPart oder 2>Class.Part2> handelt.


local part = object:FindFirstAncestorWhichIsA("BasePart")

Siehe auch, Instance:FindFirstAncestor() .

Parameter

className: string

Die Object.ClassName zu suchen.


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 wahr ist, sucht diese Funktion alle Nachkommen, nicht nur die unmittelbaren Kinder der Instance .

Überprüfen der Existenz eines Objekts

FindFirstChild ist erforderlich, wenn Sie ein Objekt vor der Fortsetzung überprüfen müssen. Wenn Sie versuchen, ein Kind per Namen zu indizieren, wird ein Fehler angezeigt, wenn das Kind nicht existiert.


-- Die folgenden Zeilfehler, wenn Teil nicht im Arbeitsbereichexistiert:
workspace.Part.Transparency = 0.5

Verwenden Sie FindFirstChild, um zuerst nach Teil zu suchen, dann verwenden Sie eine if-Anweisung, um Code auszuführen, der es erfordert.


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

Ein Kind finden, dessen Name einer Eigenschaft entspricht

Manchmal ist der Name eines Objekts dasselbe wie das eines Eigenschafts seines Parent. Wenn Sie den Dot-Betreiber verwenden, übernehmen Eigenschaften die Vorratsrolle über Kinder, wenn sie einen Namen teilen.

Im folgenden Beispiel wird ein Folder mit dem Namen "Farbe" zu einem Part hinzugefügt, der auch die Part.Color Eigenschaftenbesitzt. 2>Class.Part.Color2> bezieht sich auf den 5>Datatype.Color35>, nicht den Ordner.


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

Ein Vorteil der Verwendung von FindFirstChild() auf diese Weise ist, dass die Einführung neuer Eigenschaften kein Risiko für Ihren Codesdarstellt.

Leistungsnotiz

FindFirstChild() dauert etwa 20 % länger als die Verwendung des Dot-Operators und ist fast 8-mal länger als die einfache

Parameter

name: string

Der Instance.Name für die Suche nach.

recursive: bool

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

Standardwert: false

Rückgaben

Die Instance gefunden.

Code-Beispiele

Instance:FindFirstChild

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

FindFirstChildOfClass

Parallel schreiben

Gibt das erste Kind der Instance zurück, whose ClassName gleich ist wie der angegebene Klasse.

Wenn kein entsprechendes Kind gefunden wird, gibt diese Funktion null zurück.

Anders als Instance:FindFirstChildWhichIsA() gibt diese Funktion nur Objekte zurück, deren Klasse den angegebenen Namen erlaubt, unabhängig von der Klassenvererbung.

Entwickler, die nach einem Kind by name suchen, sollten stattdessen Instance:FindFirstChild() verwenden.

Parameter

className: string

Die Object.ClassName zu suchen.


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 zurück, für das Object:IsA() wahr ist, und das erste Kind der Class.Instance ist für das angegebene Mitglied zurückgegeben.

Wenn kein entsprechendes Kind gefunden wird, gibt diese Funktion null zurück. Wenn das optionale recursive Argument wahr ist, sucht diese Funktion alle Nachkommen, nicht nur die unmittelbaren Kinder der Instance.

Anders als Instance:FindFirstChildOfClass() , verwendet diese Funktion Object:IsA(), was die Erb继承 respektiert. Zum Beispiel:


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

Daher wird das folgende Codebeispiel die erste BasePart -Kind zurückgeben, unabhängig davon, ob es sich um ein WedgePart , MeshPart oder 1> Class.Part1> handelt.


local part = object:FindFirstChildWhichIsA("BasePart")

Entwickler, die nach einem Kind by name suchen, sollten stattdessen Instance:FindFirstChild() verwenden.

Parameter

className: string

Die Object.ClassName für die Suche nach.

recursive: bool

Ob die Suche recursiv ausgefü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 kann nicht verwendet werden. Um den ersten Nachkommen einer Instanz zu finden, verwenden Sie stattdessen den recursive -Parameter auf Instance:FindFirstChild() .

Parameter

name: string

Der Instance.Name für die Suche.


Rückgaben

Die Instance gefunden.

GetActor

Parallel schreiben

Wenn die Instance ein Actor ist, wird das Actor selbst zurückgegeben. Ansonsten wird sein nächster Vorgänger 2>Class.Actor2> zurückgegeben. Wenn kein Vorgänger ein 5>Class.Actor5> ist, wird das Ergebnis 8>nil8> sein.


Rückgaben

Der Actor gefunden.

GetAttribute

Variant
Parallel schreiben

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

Zum Beispiel setzt der folgende Code Snippet und erhält dann den Wert des Instanz InitialPosition Attribut:


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.


Rückgaben

Variant

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

GetAttributeChangedSignal

Diese Funktion gibt ein Ereignis zurück, das genau wie das Changed Ereignis funktioniert, mit der Ausnahme, dass es nur dann ausgeführt wird, wenn das angegebene Attribut geändert wird; Wirksam ist dies ähnlich wie GetPropertyChangedSignal() für Attribute.

Es ist in der Regel eine gute Idee, diesen Methoden anstelle einer Verbindung mit Changed mit einer Funktion zu verwenden, die den Namens属性namen überprüft. Aufeinanderfolgende Aufrufe dieser Methode auf demselben Objekt mit demselben Namens属性namen geben dieselbe Ereignis zurück.

Das folgende Codebeispiel gibt ein Signal zurück, das die Funktion attributeChanged() auslöst, wenn die Part seine ursprüngliche Position verändert:


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 ausgeführt wird, wenn ein Attribut auf der Instanz geändert wird.

Parameter

attribute: string

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


Rückgaben

Ein Ereignis, das ausgelöst wird, wenn das angegebene Attribut geändert wird.

GetAttributes

Parallel schreiben

Diese Methode gibt ein Wörterbuch von Schlüsselwerten für jedes Attribut zurück, in dem der Schlüssel der Name des Attributs und der Wert ein nicht- nil -Wert sind.

Das folgende Code-Snippet gibt zum Beispiel die Attribute und Werte einer Instanz aus:


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 Attribut-Namen zugewiesen ist.


Rückgaben

Ein Wörterbuch von String → Variant-Pairs für jedes Attribut, bei dem der Name des Attributs und die Variant ein nicht null-Wert ist.

GetChildren

Instances
Parallel schreiben

Gibt eine Matrix zurück (eine nummerisch indexierte Tabelle), die alle direkten Kinder der Instanz enthält, oder jedes Instance , whose Parent das Objekt entspricht. Die Matrix kann mit der Verwendung eines numerischen oder generischen For-Loopsiteratisiert werden:


-- Zähler-for-Loop-Beispiel
local children = workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

-- Standard-for-Loop-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 ihre Parent -Eigenschaft auf das Objekt gesetzt wurde.

Siehe auch die GetDescendants Funktion.


Rückgaben

Instances

Ein Array, das die Kinder der Instanz enthält.

Code-Beispiele

Instance:GetChildren

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

GetDebugId

Nicht durchsuchbar
Plugin-Sicherheit

Rückgibt eine codierte Zeichenkette der internen Roblox-Debug-ID.

Hinweis:

  • Dieses Item ist geschützt. Wenn du es in einem Script oder LocalScript verwendest, wird ein Fehler auftreten
  • Eine Debug-ID ist eine ID, die in Debug-Prozessen verwendet wird. Es ermöglicht es einem Debugger, jede Anweisung vor dem Ausführen einer Anwendung zu lesen. Alle Objekte in Roblox agieren wie Prozesse und jede Laufweisung (oder "Codes") , die wenn nötig deDebugged werden kann
  • Dies kann für Plugins nützlich sein, die ähnliche Objekte voneinander unterscheiden müssen (z. B. Objekte, die den gleichen Namen haben)

Parameter

scopeLength: number

Die Fadenkreuzlänge.

Standardwert: 4

Rückgaben

Die String.

Code-Beispiele

Instance:GetDebugId

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

GetDescendants

Parallel schreiben

Dieser Objekt-Methode gibt ein Array zurück, das 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, das Nachkommen der Instanz enthält.

Code-Beispiele

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 Zeichenfolge zurück, die die Vorfahren der Instanz beschreibt. Die Zeichenfolge ist eine Konzentration der Name des Objekts und seiner Vorfahren, die durch Zeichen trennt. Die DataModel ( game ) ist nicht betrachtet. Zum Beispiel kann

Wenn auf ein Instance , das nicht ein Nachkommen des DataModel ist, aufgerufen wird, betrachtet diese Funktion alle Vorfahren bis hin zum obersten ohne einen Parent.

Diese Funktion ist nützlich für das Loggen und Debuggen. Sie sollten nicht versuchen, die zurückgegebene Zeichenfolge für irgendeine nützliche Operation zu analysieren; diese Funktion entzieht sich keine Zeichen (oder irgendeines andere Symbol) in Objektnamen. In anderen Worten, obwohl seine Ausgabe oft ein gültiger Lua-Identifikator ist, wird nicht garantiert.


Rückgaben

Der vollständige Name der Instance.

Code-Beispiele

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

Parameter

name: string

Rückgaben

Variant

GetTags

Parallel schreiben

Diese Methode gibt ein Array der auf die angegebene Instanz angewandten Tags zurück, als Strings. Sie können Tags entweder in Studio in dem Eigenschaften-Fenster oder zur Laufzeit mit AddTag() hinzufügen.

Diese Methode ist nützlich, wenn Sie etwas mit mehreren Tags auf einer Instanz gleichzeitig tun möchten. jedoch ist es ineffizient, diesen Methode zu verwenden, um auf die Existenz eines einzelnen Tags zu überprüfen; stattdessen verwenden Sie HasTag() , um auf ein bestimmtes Tag zu überprüfen.


Rückgaben

HasTag

Parallel schreiben

Diese Methode gibt true zurück, wenn der angegebene Tag dem Objekt hinzugefügt wurde. Sie können Tags entweder in Studio in der Eigenschaften-Fenster oder bei der Laufzeit mit Class.Instance:AddTag()|AddTag() hinzufügen.

Parameter

tag: string

Rückgaben

IsAncestorOf

Parallel schreiben

Gibt zurück, wenn ein Instance ein Vorgänger des angegebenen Nachfolgerist.

Ein Instance gilt als Vorgänger eines Objekts, wenn sein Instance.Parent oder einer seiner übergeordnetes TeilInstance.Parent auf die 2>Class.Instance2> festgelegt ist.

Siehe auch, Instance:IsDescendantOf() .

Parameter

descendant: Instance

Der Nachkomme Instance .


Rückgaben

True, wenn das Instance der angegebenen Nachfolgerist.

Code-Beispiele

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 zurück true zurück, wenn ein Instance ein Nachkommen des angegebenen Vorgängerist.

Ein Instance wird als Nachkommen eines Objekts betrachtet, wenn der Elternteil oder einer seiner übergeordnetes Teilauf das Objekt festgelegt ist.

Beachten Sie, dass DataModel ein Nachkommen von null ist. Dies bedeutet, dass IsDescendantOf mit einem Argument von null verwendet werden kann, um zu überprüfen, ob ein Objekt entfernt wurde.

Siehe auch, Instance:IsAncestorOf() .

Parameter

ancestor: Instance

Der Vorgänger Instance .


Rückgaben

True, wenn das Instance ein Nachkommen des angegebenen Vorgängerist.

Code-Beispiele

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

Diese Methode entfernt ein Tag von einer Instanz. Es wird keinen Fehler anzeigen, wenn das Objekt keinen Tag hat. Der erfolgreiche Entfernung eines Tags wird ein Signal mit dem von CollectionService:GetInstanceRemovedSignal() mit dem angegebenen Tag ausgegeben.

Beachten Sie, dass beim Taggen einer Instanz die Verwendung einiger Ressourcen üblich ist, um der Tag seine Funktionalität zu geben, z. B. Ereignisverbindungen oder Tabellen. Um den Speicherverbrauch zu verhindern, ist es eine gute Idee, diese (verbinden, auf nil setzen usw.) zu saubermachen, wenn Sie es nicht mehr für einen Tag benötigen.

Parameter

tag: string

Rückgaben

void

SetAttribute

void

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

Das folgende Code-Snippet setzt den InitialPosition -Attribut der Instanz auf Vector3.new(0, 10, 0) :


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 Plätze oder einzigartigen Symbole sind erlaubt.
  • Schnurzen müssen weniger als 100 Zeichen lang sein.
  • Namen sind nicht mit RBX zu starten, es sei denn, der Anrufer ist ein Roblox-Core-Skript (reserviert für Roblox).

Wenn Sie versuchen, ein Attribut auf einen unterstützten eingebenzu setzen, wird ein Fehler angezeigt.

Siehe auch:

  • Instance:GetAttribute() welche den Wert zurückgibt, der dem angegebenen Attribut-Namen zugewiesen wurde.
  • Instance:GetAttributes() welches ein Wörterbuch von Schlüsselwertenpaaren für jedes der Attributs des Instanzes zurückgibt.

Parameter

attribute: string

Der Name des Attributs, das festlegenwird.

value: Variant

Der Wert, der dem angegebenen Attribut zugewiesen wird.


Rückgaben

void

WaitForChild

Kann anhalten

Kehrt das Kind der Instance mit dem angegebenen Namen zurück. Wenn das Kind nicht existiert, wird das aktuelle Thread zurückgegeben, bis es existiert. Wenn der timeOut-Parameter angegeben ist, wird diese Methode nach der angegebenen Anzahl von Sekunden abgelaufen und nil zurückgegeben.

Primär verwenden

WaitForChild() ist äußerst wichtig, wenn Sie auf Code, der vom Client in einem LocalScript ausgeführt wird, arbeiten. Die Roblox-Engine garantiert nicht, dass die Zeit oder die

Notizen

  • Diese Funktion gibt keine Ausgabe zurück, wenn ein Kind mit dem angegebenen Namen existiert, wenn der Anruf ausgeführt wird.
  • Instance:FindFirstChild() ist eine effizientere Alternative zu WaitForChild() für Objekte, die angenommen werden.
  • Wenn eine Anrufe zu dieser Methode 5 Sekunden überschreitet, ohne zurückzukehren, und kein timeOut -Parameter angegeben, wird eine Warnung gedruckt, die Ausgabe, dass der Thread unbefristet produzieren kann.

Parameter

childName: string

Der Instance.Name wird gesucht.

timeOut: number

Ein optionales Time-out-Parameter.


Rückgaben

Die Instance gefunden.

Code-Beispiele

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 eines seiner Vorfahren geändert wird.

Dieses Ereignis enthält zwei Argumente, Kind und Elternteil. Kind bezieht sich auf das 2> Class.Instance2>, dessen 5> Class.Instance.Parent5> tatsächlich geändert wurde. 8> Elternteil8> bezieht sich auf dieses neue 1> Class.Instance.Parent1> .

Sie können dieses Ereignis verwenden, um die Löschung einer Instanz in Studio zu verfolgen, z. B. manuelle Löschung im Explorer oder durch ein Plug-in. Wenn Sie es erkennen müssen, wenn eine Instanz mit Instance:Destroy() zerstört wird, verwenden Sie stattdessen das Instance.Destroying -Ereignis.

Parameter

child: Instance

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

parent: Instance

Der neue Instance.Parent der Instance, deren Instance.Parent geändert wurde.


Code-Beispiele

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 ausgelöst, wenn ein Attribut auf der Instanz geändert wird, einschließlich der Zeit, in der ein Attribut auf nil festgelegt ist. Der Name des geänderten Attributs wird an die verbundene Funktion übergeben.

Das folgende Code-Beispiel verbindet die Funktion attributeChanged() , die jedes Mal ausgeführt wird, wenn eines der Attributen des Teils geändert wird:


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 auftritt, wenn ein bestimmtes Attribut verändert wird.

Parameter

attribute: string

Der Name des Attributs, das geändert wurde.


ChildAdded

Feuert nach, wenn ein Objekt zu diesem Instance übergeordnet ist.

Beachten Sie, dass, 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 diese Objeks Nachkommen indizieren. Dies liegt daran, dass das Objekt und seine Nachkommen nicht garantiert sind, dass sie vom Server zum Client gleichzeitig repliziert werden. Zum Beispiel:


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

Beachten Sie, dass diese Funktion nur für sofortige Kinder der Instance funktioniert. Für eine Funktion, die alle Nachkommen erfasst, verwenden Sie Instance.DescendantAdded .

Siehe auch, Instance.ChildRemoved .

Parameter

child: Instance

Die Instance, die hinzugefügt wurde.


Code-Beispiele

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 nach dem Entfernen eines Kindes aus diesem Instance ab.

Entfernt bezieht sich auf die Zeit, in der der Elternteil eines Objekts von diesem Instance zu etwas anderes als diesem Instance geändert wird. Beachten Sie, dass dieses Ereignis auch abgefeuert wird, wenn ein Kind zerstört wird (mit der Verwendung von Instance:Destroy() ) als die Zerstörungsfunktion den Elternteil eines Objekts auf null setzt.

Diese Funktion gilt nur für sofortige Kinder der Instance. Für eine Funktion, die alle Nachkommen erfasst, verwenden Sie Instance.DescendantRemoving.

Siehe auch Instance.ChildAdded .

Parameter

child: Instance

Die Instance , die entfernt wurde.


Code-Beispiele

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

Das Event DescendantAdded wird ausgelöst, nachdem ein Descendant dem Instance hinzugefügt wurde.

Wenn DescendantAdded Feuer für jeden Nachfolgerhinzufügt, wird das Ereignis für dieses Objekt und alle seine Nachkommen individuell ausgeführt.

Entwickler, die sich nur mit den sofortigen Kindern der Instance beschäftigen, sollten stattdessen Instance.ChildAdded verwenden.

Siehe auch Instance.DescendantRemoving .

Parameter

descendant: Instance

Die Instance, die hinzugefügt wurde.


Code-Beispiele

Instance.DescendantAdded

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

DescendantRemoving

Dieses Ereignis initiieren sofort vor der Eltern- Instance -Änderungen, sodass eine abstammende Instanz nicht mehr eine Nachfolgerist. 1> Class.Instance:Destroy()|Destroy()1> ändert das Eltern- 4> Class.Instance.Parent|Parent

Da dieses Ereignis vor dem Entfernen des Nachfolgerfeuert, wird der Elternteil des Nachkommen zum Zeitpunkt dieses Ereignis feuern unverändert sein. Wenn der Nachkomme auch ein direkter Kind des übergeordnetes Teilist, wird dieses Ereignis vor Instance.ChildRemoved feuern.

Wenn ein Abstamm Kinder hat, wird dieses Ereignis mit dem Abstamm zuerst ausgelöst, gefolgt von seinen Nachkommen.

Warnung

Dieses Ereignis wird mit dem Nachkommen-Objekt ausgelöst, das wird entfernt. Versuchen Sie, das Parent des Nachkommen an etwas anderes zu setzen, wird fehlgeschlagen. Dies ist ein Beispiel, das dies zeigt:


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

Die Instance wird entfernt.


Code-Beispiele

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 nie aus der Speicherung entfernt, während eine verbundene Funktion immer noch darauf zugreift. Wenn die Funktion jedoch irgendwann zurückgegeben wird, werden die Instance und seine Nachkommen auf nil übergeordnet.

Wenn die Workspace.SignalBehavior Eigenschaft auf Enum.SignalBehavior.Immediate oder eines seiner Vorfahren gesetzt ist, wird dieses Ereignis sofort ausgelöst, bevor das Instance oder eines seiner Vorfahren mit 2> Class.Instance:Destroy()2> zerstört wird.

Wenn die Eigenschaft Workspace.SignalBehavior auf Enum.SignalBehavior.Deferred eingestellt ist, wird dieses Ereignis am nächsten Resumme-Punkt ausgelöst, der nach der Zerstörung von Instance oder eines seiner Vorfahren mit 1> Class.Instance:Destroy()1> ist.

Mit Deferred Verhalten, das ein Skript an sein eigenes Instance.Destroying -Ereignis anbindet, ist die Verbindung eines Skripts an sein eigenes Class.Instance.Destruct -Ereignis problematisch, da das Skript vor dem Rückruf zerstört wird (was bedeutet, dass es nicht ausgeführt wird).

Wenn Sie ein Instance in Studio löschen, z. B. manuell durch den Explorer oder durch ein Plug-in, wird das Class.Instance nicht zerstört. Stattdessen wird der Elternteil auf Instance gesetzt, den Sie mit 2>Class.Instance.AncestryChanged2> verfolgen können.


Code-Beispiele

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