Object

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 repliziert

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

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    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.

  • IsA(className : string):boolean
    Parallel schreiben

    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

Schreibgeschützt
Nicht repliziert
Parallel lesen

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() do
if child.ClassName == "Part" then
print("Found a Part")
-- will find Parts in model, but NOT TrussParts, WedgeParts, etc
end
end

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

property: string

Die Eigenschaft, die sich verbinden soll.

Standardwert: ""

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.

Old-to-New Values with Changed

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

Dieses Codebeispiel zeigt die Äquivalenz des Changed Ereignisses und des Ereignisses, das von GetPropertyChangedSignal zurückgegeben wird.

Geändert und 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)
-- Löse einige Änderungen aus (weil wir zweimal verbunden sind,
-- beide werden zwei Aufrufe verursachen auf BrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Institutional white")
Parallel schreiben

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

className: string

Die Klasse, gegen die die Klasse des Objekts überprüft wird. Groß-/Kleinschreibung.

Standardwert: ""

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.

Instance:IsA()

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

property: string

Der Name der Eigenschaft, die sich geändert hat.


Code-Beispiele

Dieses Beispiel zeigt die Nuancen des geänderten Ereignisses auf normalen Objekten und "-Wert"-Objekten.

Verändertes Ereignis

-- Zeige das geänderte Ereignis durch die Erstellung eines Teils
local part = Instance.new("Part")
part.Changed:Connect(print)
-- Dies feuert Änderungen mit "Transparenz" ab
part.Transparency = 0.5
-- Ebenso feuert dies "Nummer" mit Änderungen ab
part.Name = "SomePart"
-- Da sich die BrickColor ändern wird, wird sich auch andere ändern
-- Eigenschaften gleichzeitig, diese Zeile feuert Änderungen ab
-- mit "BrickColor", "Color3" und "Color3uint16".
part.BrickColor = BrickColor.Red()
-- Ein NumberValue enthält eine doppelt präzise Floating-Point-Nummer
local vNumber = Instance.new("NumberValue")
vNumber.Changed:Connect(print)
-- Dies feuert Changed mit 123.456 (nicht "Wert") ab
vNumber.Value = 123.456
-- Das feuert nicht Geändert ab
vNumber.Name = "SomeNumber"
-- Ein StringValue speichert einen String
local vString = Instance.new("StringValue")
vString.Changed:Connect(print)
-- Dies feuert Änderungen mit "Hallo" ab (nicht "Wert")
vString.Value = "Hello"

This code sample demonstrates the Changed event firing within a parent object.

Change Detector

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