Instance
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
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
Bestimmt, ob ein Instance und seine Nachkommen mit Instance:Clone() geklont werden können und veröffentlicht werden können.
Die Reihe von Fähigkeiten, die für Skripte innerhalb dieses Containers verwendet werden können.
Eine nicht eindeutige Kennung der Instance.
Bestimmt den hierarchischen Elternteil der Instance.
Eine veraltete Eigenschaft, die ursprünglich CoreGui Objekte schützte.
Versandelt die Instanz in einen Sandbox-Container.
Methoden
Apply a tag to the Instanz.
Diese Funktion zerstört alle Kinder einer Instanz.
Erstellen Sie eine Kopie einer Instanz und all ihrer Nachkommen, unabhängig davon, ob die Instanzen Archivable sind.
Setzt die Instance.Parent-Eigenschaft auf null, sperrt die Class.Instance.ParentEigenschaften, verbindet alle Verbindungen und ruft Destroy auf allen Kindern aus.
Gibt den ersten Vorgänger der Instance, dessen Instance.Name der angegebene Name entspricht.
Gibt den ersten Vorgänger der Instance, dessen Object.ClassName der angegebene Namenraum entspricht.
Gibt den ersten Vorgänger der Instance für den, für den Object:IsA() wahr ist für den angegebenen Namen.
Gibt das erste Kind der Instance zurück, das mit dem angegebenen Namen gefunden wurde.
Gibt das erste Kind der Instance zurück, whose ClassName gleich ist wie der angegebene Klasse.
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.
Gibt den ersten Nachkommen zurück, der mit dem angegebenen Instance.Name gefunden wurde.
Kehre den Actor mit der Instanz zu, wenn nötig.
Gibt den Wert zurück, der dem angegebenen Attribut-Namen zugewiesen ist.
Gibt ein Ereignis zurück, das ausgeht, wenn das angegebene Attribut geändert wird.
Kehrt ein Wörterbuch der Eigenschaften der Instanz zurück.
Rückt eine Matrix zurück, die alle Kinder der Instanz enthält.
Rückgibt eine codierte Zeichenkette der internen Roblox-Debug-ID.
Rückgibt ein Array, das alle Nachkommen der Instanz enthält.
Rückgibt eine Zeichenfolge, die die Vorfahren der Instanz beschreibt.
Bietet eine Matrix aller auf die Instanz angewandten Tags.
Überprüfen, ob die Instanz einen bestimmten Tag hat.
Gibt zurück, wenn ein Instance ein Vorgänger des angegebenen Nachfolgerist.
Gibt zurück true zurück, wenn ein Instance ein Nachkommen des angegebenen Vorgängerist.
Entfernt ein Tag aus der Instanz.
Setzt das Attribut mit dem angegebenen Namen auf den angegebenen Wert.
Gibt das Kind der Instance mit dem angegebenen Namen zurück. Wenn das Kind nicht existiert, wird das derzeitige Thread zurückgegeben, bis es so ist.
Ereignisse
Feuert, wenn die Instance.Parent Eigenschaft des Objekts oder eines seiner Vorfahren geändert wird.
Feuert jedes Mal, wenn ein Attribut auf der Instance geändert wird.
Feuert nach, wenn ein Objekt zu diesem Instance übergeordnet ist.
Feuert nach dem Entfernen eines Kindes aus diesem Instance ab.
Feuert nach dem Hinzufügen eines Nachkommen zum Instance ab.
Feuert sofort, bevor ein Nachkomme des Instance entfernt wird.
Feuert sofort vor (oder wird verzögert bis nach) dass die Instanz über Instance:Destroy() zerstört wird.
Eigenschaften
Archivable
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()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
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
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.Baseplatelocal 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
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 workspacelocal part = Instance.new("Part")part.Parent = workspace-- Instance new can also take Parent as a second parameterInstance.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 Parallelberechnungsparameterpart.Anchored = truepart.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
Dieses Eigenschaft wird verwendet, um Objekte im CoreGui Dienst vor Benutzern unautorisiert zu ändern zu schützen. Es wurde deprecated und tut nichts.
Sandboxed
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
Methoden
AddTag
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
Rückgaben
ClearAllChildren
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() doif instance:IsA("BasePart") theninstance:Destroy()endend
Rückgaben
Code-Beispiele
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
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
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 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 = nilwait(2)object.Parent = workspace
Um ein Objekt nach einer bestimmten Zeit zu zerstören, verwende Debris:AddItem().
Rückgaben
Code-Beispiele
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
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
Der Instance.Name wird gesucht.
Rückgaben
FindFirstAncestorOfClass
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
Die Object.ClassName zu suchen.
Rückgaben
FindFirstAncestorWhichIsA
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")) --> trueprint(part:IsA("BasePart")) --> trueprint(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
Die Object.ClassName zu suchen.
Rückgaben
FindFirstChild
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 thenpart.Transparency = 0.5end
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 = partlocal c = part.Color --> Eine Farbe3local 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
Der Instance.Name für die Suche nach.
Ob die Suche recursiv ausgeführt werden soll oder nicht.
Rückgaben
Code-Beispiele
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
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
Die Object.ClassName zu suchen.
Rückgaben
Code-Beispiele
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
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")) --> wahrprint(part:IsA("BasePart")) --> wahrprint(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
Die Object.ClassName für die Suche nach.
Ob die Suche recursiv ausgeführt werden soll oder nicht.
Rückgaben
FindFirstDescendant
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
Der Instance.Name für die Suche.
Rückgaben
GetActor
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
GetAttribute
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.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Siehe auch
- Instance:SetAttribute() welches das Attribut mit dem angegebenen Namen auf den angegebenen Wert setzt.
- Instance:GetAttributes() welches ein Wörterbuch von Schlüsselwertenpaaren für jedes der Attributs des Instanzes zurückgibt.
Parameter
Der Name des Attributs, das abgerufen wird.
Rückgaben
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
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
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.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(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
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-Beispiellocal children = workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
-- Standard-for-Loop-Beispiellocal children = workspace:GetChildren()for i, child in children doprint(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
Ein Array, das die Kinder der Instanz enthält.
Code-Beispiele
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
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
Die Fadenkreuzlänge.
Rückgaben
Die String.
Code-Beispiele
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
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
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
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
Code-Beispiele
-- 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
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
GetTags
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
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
Rückgaben
IsAncestorOf
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
Rückgaben
Code-Beispiele
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
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
Rückgaben
Code-Beispiele
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
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
Rückgaben
SetAttribute
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.Partpart: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
Der Name des Attributs, das festlegenwird.
Der Wert, der dem angegebenen Attribut zugewiesen wird.
Rückgaben
WaitForChild
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
Der Instance.Name wird gesucht.
Ein optionales Time-out-Parameter.
Rückgaben
Code-Beispiele
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
Die Instance , deren Instance.Parent geändert wurde.
Der neue Instance.Parent der Instance, deren Instance.Parent geändert wurde.
Code-Beispiele
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
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
Code-Beispiele
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
Code-Beispiele
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
Code-Beispiele
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
Code-Beispiele
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
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()
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())