Object
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Objekt ist die Basisklasse für alle Klassen in der Roblox-Klassenpyramide.Jede andere Klasse, die die Roblox-Engine definiert, erbt alle Mitglieder von Object.Es ist nicht möglich, direkt ein Objekt zu erstellen.
Zusammenfassung
Eigenschaften
Eine nur lesbare Zeichenkette, die die Klasse repräsentiert, zu der diese Object gehört.
Methoden
Erhalten Sie ein Ereignis, das abgefeuert wird, wenn eine bestimmte Eigenschaft des Objekts geändert wird.
Gibt wahr zurück, wenn die Klasse eines Objekts einer bestimmten Klasse entspricht oder von ihr erbt.
Ereignisse
Feuert sofort nach einem Änderung der Eigenschaft eines Objekts ab, mit einigen Einschränkungen.
Eigenschaften
ClassName
Eine nur lesbare Zeichenkette, die die Klasse repräsentiert, zu der diese Object gehört.
Diese Eigenschaft kann mit verschiedenen anderen Funktionen verwendet werden, die verwendet werden, um Objekte nach eingebenzu identifizieren, wie Object:IsA() oder Instance:FindFirstChildOfClass().
Beachten Sie, dass diese Eigenschaft nur lesbar ist und durch Skripte nicht geändert werden kann.Entwickler, die die Klasse eines Objekts ändern möchten, müssen stattdessen ein neues Object erstellen.
Im Gegensatz zu Object:IsA() kann ClassName verwendet werden, um zu überprüfen, ob ein Objekt einer bestimmten Klasse angehört, ohne Klassen-Erbschaft zu ignorieren. Zum Beispiel:
for _, child in workspace:GetChildren() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
Methoden
GetPropertyChangedSignal
Diese Methode gibt ein Ereignis zurück, das sich genau wie das Ereignis Changed verhält, außer dass es nur dann feuert, wenn die angegebene Eigenschaft geändert wird.Es ist im Allgemeinen eine gute Idee, diese Methode anstelle einer Verbindung zu Changed 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.
ValueBase Objekte, wie IntValue und StringValue, verwenden ein modifiziertes Changed Ereignis, das mit den Inhalten seiner Value Eigenschaft feuert.Als solche bietet diese Methode einen Weg, Änderungen an anderen Eigenschaften dieser Objekte zu erkennen.
Beachten Sie, dass dieses Ereignis keine Argumente an eine verbundene Funktion übergeben wird, so muss der Wert der geänderten Eigenschaft direkt innerhalb eines Skript, das. PL: die Skriptsgelesen werden.
Beschränkungen
Das Ereignis, das von dieser Methode zurückgegeben wird, feuert nicht für physikbezogene Änderungen, wie z. B. wenn das CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position oder Orientation Eigenschaften eines BasePart Änderungs durch Gravitation entstehen.Um Änderungen an diesen Eigenschaften zu erkennen, erwäge die Verwendung eines physikbasierten Ereignisses wie RunService.PreSimulation.
Zusätzlich kann das zurückgegebene Ereignis nicht auf jede Änderung von Eigenschaften feuern, die sehr häufig geändert werden, und/oder es kann für solche Eigenschaften Allenicht feuern.Es wird empfohlen, sorgfältig nach Eigenschaftsänderungen zu suchen, die die Spiellogik beeinflussen.
Parameter
Die Eigenschaft, die sich verbinden soll.
Rückgaben
Ein Signal, das immer dann abgefeuert wird, wenn sich die Eigenschaft ändert.
Code-Beispiele
This code sample demonstrates how to save a value before a changed event fires on it in order to get more information about a change.
local part = Instance.new("Part")
local currentColor = part.BrickColor
local function onBrickColorChanged()
local newColor = part.BrickColor
print("Color changed from", currentColor.Name, "to", newColor.Name)
currentColor = newColor
end
part:GetPropertyChangedSignal("BrickColor"):Connect(onBrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Really blue")
This code sample demonstrates the equivalence of the Changed event and event returned by GetPropertyChangedSignal.
local part = Instance.new("Part")
local function onBrickColorChanged()
print("My color is now " .. part.BrickColor.Name)
end
local function onChanged(property)
if property == "BrickColor" then
onBrickColorChanged()
end
end
part:GetPropertyChangedSignal("BrickColor"):Connect(onBrickColorChanged)
part.Changed:Connect(onChanged)
-- Trigger some changes (because we connected twice,
-- both of these will cause two calls to onBrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Institutional white")
IsA
IsA gibt true zurück, wenn die Klasse des Objekts gleich oder eine Unterklasse einer bestimmten Klasse ist.Diese Funktion ist ähnlich wie die ⇒ Operatoren in anderen Sprachen und ist eine Form der Typ-Introspektion.Um die Klassen-Erbschaft zu ignorieren, teste stattdessen direkt die ClassName Eigenschaft.Für die Überprüfung von nativen Luau-Datentypen (Zahl, Stringusw.) verwenden Sie die Funktionen type und typeof.
Am häufigsten wird diese Funktion verwendet, um zu testen, ob ein Objekt eine Art Teil ist, wie Part oder WedgePart, das von BasePart (einer abstrakten Klasse) erbt.Wenn dein Ziel zum Beispiel darin besteht, alle Gliedmaßen eines Charakters auf die gleiche Farbe zu ändern, könntest du GetChildren verwenden, um über die Kinder zu iterieren, und dann IsA verwenden, um nicht-BasePart-Objekte mit der Eigenschaft BrickColor zu filtern, die die Eigenschaft fehlt:
local Players = game:GetService("Players")
local function paintFigure(character, color)
-- Iterieren über die Kindobjekte des Charakters
for _, child in character:GetChildren() do
-- Filtern Sie nicht-teilbare Objekte wie Hemd, Hose und Humanoid aus
-- R15 verwendet MeshPart und R6 verwendet Part, also verwenden wir hier BasePart, um beides zu erkennen:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))
Da alle Klassen von Object erben, wird das Aufrufen von object:IsA("Object") immer wahr zurückgeben.
Parameter
Die Klasse, gegen die die Klasse des Objekts überprüft wird. Groß-/Kleinschreibung.
Rückgaben
Beschreibt, ob die Klasse des Objekts übereinstimmte oder eine Unterklasse der angegebenen Klasse ist.
Code-Beispiele
Demonstrates determining the class of Workspace using Instance:IsA()
Workspace is of class 'Workspace', so the first statement is true. Workspace is not of class 'BasePart', so the second statement is false. Workspace inherits from Instance and therefore is of class 'Instance', so the third statement is true.
local Workspace = game:GetService("Workspace")
print(Workspace:IsA("Workspace")) -- true
print(Workspace:IsA("BasePart")) -- false
print(Workspace:IsA("Instance")) -- true
Ereignisse
Changed
Dieses Ereignis wird sofort abgefeuert, nachdem eine Objekt-Eigenschaft geändert wurde, und es funktioniert mit den meisten Anwendungsfällen (siehe Einschränkungen unten).Der neue Wert einer geänderten Eigenschaft ist nicht als Parameter übergeben worden, so muss er über object[property] abgerufen werden.Zum Beispiel:
object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)
Wenn Sie sich nur darum interessieren, die Änderung einer bestimmten Eigenschaftenzu hören, verwenden Sie stattdessen die GetPropertyChangedSignal() -Methode.
Für ValueBase Objekte wie IntValue und StringValue feuert dieses Ereignis nur ab, wenn sich die Eigenschaft des Objekts Value ändert.Um andere Änderungen in ValueBase Objekten zu erkennen, verwende stattdessen GetPropertyChangedSignal().
Beschränkungen
Dieses Ereignis feuert nicht für physikbezogene Änderungen, wie wenn die CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position oder Orientation Eigenschaften eines BasePart Änderungs durch Gravitation verursachten ändern.Um Änderungen an diesen Eigenschaften zu erkennen, erwäge die Verwendung eines physikbasierten Ereignisses wie RunService.PreSimulation.
Zusätzlich kann dieses Ereignis möglicherweise nicht bei jeder Änderung von Eigenschaften feuern, die sehr häufig geändert werden, und/oder es kann für solche Eigenschaften Allenicht feuern.Es wird empfohlen, sorgfältig nach Eigenschaftsänderungen zu suchen, die die Spiellogik beeinflussen.
Parameter
Der Name der Eigenschaft, die sich geändert hat.
Code-Beispiele
This sample demonstrates the subtleties of the Changed event on normal objects and "-Value" objects.
-- Demonstrate the Changed event by creating a Part
local part = Instance.new("Part")
part.Changed:Connect(print)
-- This fires Changed with "Transparency"
part.Transparency = 0.5
-- Similarly, this fires Changed with "Number"
part.Name = "SomePart"
-- Since changing BrickColor will also change other
-- properties at the same time, this line fires Changed
-- with "BrickColor", "Color3" and "Color3uint16".
part.BrickColor = BrickColor.Red()
-- A NumberValue holds a double-precision floating-point number
local vNumber = Instance.new("NumberValue")
vNumber.Changed:Connect(print)
-- This fires Changed with 123.456 (not "Value")
vNumber.Value = 123.456
-- This does not fire Changed
vNumber.Name = "SomeNumber"
-- A StringValue stores one string
local vString = Instance.new("StringValue")
vString.Changed:Connect(print)
-- This fires Changed with "Hello" (not "Value")
vString.Value = "Hello"
This code sample demonstrates the Changed event firing within a parent object.
local object = script.Parent
local function onChanged(property)
-- Get the current value of the property
local value = object[property]
-- Print a message saying what changed
print(object:GetFullName() .. "." .. property .. " (" .. typeof(value) .. ") changed to " .. tostring(value))
end
object.Changed:Connect(onChanged)
-- Trigger a simple change in the object (add an underscore to the name)
object.Name = "_" .. object.Name