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óra zdefiniowana przez silnik Roblox, odziedzicza wszystkich członków Obiektu. Nie jest możliwe utworzenie bezpośrednio Obiektu.

Podsumowanie

Właściwości

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

    Strumień czytania-tylko reprezentujący klasę to Object .

Metody

Zdarzenia

Właściwości

ClassName

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Strumień czytania-tylko reprezentujący klasę to Object .

Ten parametr może być używany z różnymi innymi funkcjami, które są używane do identyfikacji obiektów według wpisywać, takimi jak Object:IsA() lub Instance:FindFirstChildOfClass().

Uwaga: ta właściwość jest czytelna tylko i nie może być zmieniana przez skrypty. Rozwój programistów chcących zmienić klasę obiektu będzie zamiast tego musiał 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ącej dziedzictwo 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

Ten metod returnuje wydarzenie, które zachowuje się dokładnie jak wydarzenie Changed, z wyjątkiem tego, że działa tylko, gdy dana właściwość zmienia się. Jest to ogólnie dobry pomysł użyć tego metodu zamiast połączenia z Changed z funkcją sprawdzającą nazwę właściwości. Kolejne

Class.ValueBase obiekty, takie jak IntValue i StringValue, używają zmodyfikowanego wydarzenia 0> Class.Object.Changed|Changed0>, które działa z treścią ich właściwości ValueBase3>. W ten sposób ten metod wykrywa zmiany w innych właściwości tych obie

Uwaga, że ten wątek nie przekaże żadnych argumentów związanych funkcji, więc wartość zmienionej właściwości musi być czytana bezpośrednio w skrypcie.

Ograniczenia

Wyzwany przez ten metodę event nie Class.BasePart.CFrame|CFrame ,

Dodatkowo, zwracany przez to wydarzenie ewent może nie zostać wykonany na każdą zmianę właściwości, która zmienia się bardzo często, i/lub nie zostanie wykonany dla takich właściwości w wszystko. Rekomendujemy, aby dokładnie testować zmiany właściwości, które wpływają na zachowanie gry.

Parametry

property: string

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


Zwroty

sygnał, który wysyłany jest za każdym razem, gdy właściwość zmienia się.

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

IsA

Zapis równoległy

IsA zwraca prawdę, jeśli klasa obiektu jest równoznaczna z lub podklasą danej klasy. Ta funkcja jest podobna do operatorów instancji w innych językach i

Najczęściej funkcja ta jest używana do testowania, czy obiekt jest jakimś rodzajem części, takim jak Part lub Class.WedgePart</


local function paintFigure(character, color)
-- Ziteruj nad dziecięzymi obiektami postaci
for _, child in character:GetChildren() do
-- Filtruj nienazwane obiekty, takie jak koszula, spodnie i człowiek
-- R15 używa MeshPart i R6 używa Part, więc używamy tutaj BasePart, aby wykryć obie:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(game.Players.Player.Character, BrickColor.new("Bright blue"))

Ponieważ wszystkie klasy dziedziczą się od Object, wyszwanie object:IsA("Object") zawsze zwróci prawdziwy wynik.

Parametry

className: string

Klasa, przeciwko której będzie sprawdzana klasa Obiektu. Czujny.


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

Ten wąż pojawia się natychmiastowo 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 jest nie przekazywana jako parametr, więc musi być dostępna poprzez użycie object[property]. Na przykład:


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

Jeśli jesteś tylko zainteresowany słuchaniem zmiany jednej określonej własności, rozważ GetPropertyChangedSignal() metodę zamiast tego.

Dla obiektów ValueBase takich jak IntValue i StringValue, ten wydarzenie tylko się włącza, gdy właściwość 1> Value1> obiektu zmienia się. Aby wykryć inne zmiany w obiektach 4> Class.

Ograniczenia

Ten wątek nie nie strzela za zmiany związane z fizyką, takie jak kied

Dodatkowo, ten wątek nie może zostać uruchomiony na każdą zmianę właściwości, która zmienia się bardzo często, i/lub nie może zostać uruchomiony dla takich właściwości w wszystko. Rekomendujemy, aby uważnie testować zmiany właściwości, które wpływają na zachowanie 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