Object
*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.
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
Czytelna tylko struna reprezentująca klasę, do której należy Object należy.
Metody
Zdobądź wydarzenie, które wysyła się, gdy dana właściwość obiektu się zmienia.
Zwraca prawdę, jeśli klasa obiektu pasuje lub dziedziczy od określonej klasy.
Zdarzenia
Wystrzeliwany natychmiast po zmianie właściwości obiektu, z pewnymi ograniczeniami.
Właściwości
ClassName
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() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
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
Właściwość do połączenia.
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.
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 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
Klasa, przeciwko której zostanie sprawdzona klasa Obiektu. Wrażliwa na dużą literę.
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.
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
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.
-- 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