Object

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Bez replikacji

Obiekt jest podstawową klasą dla wszystkich klas w hierarchii klas Roblox.Każda inna klasa, którą definiuje silnik Roblox, dziedziczy wszystkie członków Obiektu.Nie można bezpośrednio utworzyć obiektu.

Podsumowanie

Właściwości

  • Tylko do odczytu
    Bez replikacji
    Odczyt równoległy

    Czytelna tylko struna reprezentująca klasę, do której należy Object należy.

Metody

Zdarzenia

Właściwości

ClassName

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Czytelna tylko struna reprezentująca klasę, do której należy Object należy.

Właściwość ta może być używana z różnymi innymi funkcjami, które są używane do identyfikacji obiektów przez wpisywać, takimi jak Object:IsA() lub Instance:FindFirstChildOfClass().

Zauważ, że ta właściwość jest tylko odczytywana i nie może być zmieniana przez skrypty.Programiści, którzy chcą zmienić klasę obiektu, muszą zamiast tego utworzyć nowy Object.

W przeciwieństwie do Object:IsA(), ClassName może być używany do sprawdzenia, czy obiekt należy do określonej klasy ignorując dziedziczenie klasy. Na przykład:


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

Metody

GetPropertyChangedSignal

Ta metoda zwraca wydarzenie, które zachowuje się dokładnie tak samo jak wydarzenie Changed, z wyjątkiem tego, że wystrzeliwuje tylko wtedy, gdy dana właściwość się zmienia.Ogólnie dobrym pomysłem jest użycie tej metody zamiast połączenia z Changed z funkcją, która sprawdza nazwę właściwości.Następne wezwania do tej metody na tym samym obiekcie z tym samym nazwą właściwości zwracają to samo wydarzenie.

ValueBase obiekty, takie jak IntValue i StringValue, używają zmodyfikowanego wydarzenia Changed, które wystrzeliwuje zawartość ich właściwości Value.W związku z tym ta metoda zapewnia sposób wykrywania zmian w innych właściwościach tych obiektów.

Zauważ, że to wydarzenie nie przekaże żadnych argumentów do połączonej funkcji, więc wartość zmienionej właściwości musi być odczytana bezpośrednio w skrypcie.

Ograniczenia

Wydarzenie zwrócone przez tę metodę nie nie strzela do zmian związanych z fizyką, takich jak gdy CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position lub Orientation właściwości zmiany BasePart z powodu grawitacji.Aby wykryć zmiany w tych właściwościach, rozważ użycie wydarzenia opartego na fizyce, takiego jak RunService.PreSimulation.

Ponadto zwrócone wydarzenie może nie strzelać za każdym razem, gdy modyfikowane są właściwości, które zmieniają się bardzo często, a/lub może nie strzelać dla takich właściwości w wszystko.Zaleca się staranne testowanie zmian właściwości, które wpływają na logikę gry.

Parametry

property: string

Właściwość do połączenia.

Wartość domyślna: ""

Zwroty

Sygnał, który strzela za każdym razem, gdy zmienia się właściwość.

Przykłady kodu

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

This code sample demonstrates the equivalence of the Changed event and event returned by GetPropertyChangedSignal.

Changed and 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")
Zapis równoległy

IsA zwraca prawdę, jeśli klasa obiektu jest równoważna lub podklasa danej klasy.Funkcja ta jest podobna do operatorów w innych językach i jest formą introspekcji typu.Aby ignorować dziedziczenie klasy, testuj bezpośrednio właściwość ClassName .Aby sprawdzić rodzime typy danych Luau (number, ciągitp) użyj funkcji type i typeof.

Najczęściej funkcja ta jest używana do testowania, czy obiekt jest jakimś rodzajem części, takim jak Part lub WedgePart, który dziedziczy od BasePart (klasy abstrakcyjnej).Na przykład, jeśli twoim celem jest zmiana wszystkich kończyn postaci na ten sam kolor, możesz użyć , aby przeszukiwać dzieci, a następnie użyj IsA, aby filtrować przedmioty, które nie mają właściwości :


local Players = game:GetService("Players")
local function paintFigure(character, color)
-- Powtarzaj nad dziecięcymi obiektami postaci
for _, child in character:GetChildren() do
-- Wyfiltrowanie obiektów niepasujących, takich jak koszula, spodnie i humanoid
-- R15 używa MeshPart, a R6 używa części, więc tutaj używamy BasePart, aby wykryć oba:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))

Ponieważ wszystkie klasy dziedziczą od Object, wezwanie object:IsA("Object") zawsze zwróci prawdę.

Parametry

className: string

Klasa, przeciwko której zostanie sprawdzona klasa Obiektu. Wrażliwa na dużą literę.

Wartość domyślna: ""

Zwroty

Opisuje, czy klasa obiektu pasuje lub jest podklasą danej klasy.

Przykłady kodu

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

Zdarzenia

Changed

To wydarzenie uruchamia się natychmiast po zmianie właściwości obiektu i działa z większością przypadków użycia (patrz ograniczenia poniżej).Nowa wartość zmienionej właściwości to nie przekazana jako parametr, więc musi być uzyskiwana za pomocą object[property].Na przykład:


object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)

Jeśli jesteś zainteresowany tylko słuchaniem zmiany jednej konkretnej właściwości, rozważ zamiast tego użycie metody GetPropertyChangedSignal().

Dla obiektów ValueBase takich jak IntValue i StringValue ten incydent wystrzeliwuje tylko wtedy, gdy zmienia się właściwość obiektu Value.Aby wykryć inne zmiany w obiektach ValueBase, użyj GetPropertyChangedSignal() zamiast.

Ograniczenia

To wydarzenie nie nie strzela do zmian związanych z fizyką, takich jak gdy CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position lub Orientation właściwości zmiany BasePart ze względu na grawitację.Aby wykryć zmiany w tych właściwościach, rozważ użycie wydarzenia opartego na fizyce, takiego jak RunService.PreSimulation.

Ponadto to wydarzenie może nie wystrzelić za każdym razem, gdy modyfikowane są właściwości, które zmieniają się bardzo często, a/lub może w wszystkonie wystrzelić dla takich właściwości.Zaleca się staranne testowanie zmian właściwości, które wpływają na logikę gry.

Parametry

property: string

Nazwa właściwości, która się zmieniła.


Przykłady kodu

This sample demonstrates the subtleties of the Changed event on normal objects and "-Value" objects.

Changed Event

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

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