Object
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
L'oggetto è la classe di base per tutte le classi nella gerarchia delle classi Roblox. Ogni altra classe che il motore Roblox definisce eredita tutti i membri dell'oggetto. Non è possibile creare direttamente l'oggetto.
Sommario
Metodi
Ottieni un evento che si attiva quando una proprietà data dell'oggetto cambia.
Restituisce vero se la classe di un oggetto corrisponde o eredita una classe specificata.
Eventi
Si attiva immediatamente dopo una proprietà dell'oggetto cambia, con alcune limitazioni.
Proprietà
ClassName
Una stringa di sola lettura rappresentante la classe a cui appartiene.
Questa proprietà può essere utilizzata con varie altre funzioni che sono utilizzate per identificare gli oggetti in base al tipo, come Object:IsA() o Instance:FindFirstChildOfClass() .
Nota che questa proprietà è letta solo e non può essere modificata dagli script. Gli sviluppatori che desiderano cambiare la classe di un oggetto dovranno invece creare un nuovo Object .
A differenza di Object:IsA() , ClassName può essere utilizzato per controllare se un oggetto appartiene a una classe specifica ignorando l'ereditarietà delle classi. Ad esempio:
for _, child in workspace:GetChildren() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
Metodi
GetPropertyChangedSignal
Questo metodo restituisce un evento che si comporta esattamente come l'evento Changed , ad eccezione del fatto che si attiva solo quando la proprietà specificata cambia. È generalmente una buona idea utilizzare questo metodo invece di una connessione a Changed con una funzione che controlla il nome della proprietà. Le chiamate successive a questo metodo sullo stesso oggetto
Class.ValueBase oggetti, come IntValue e StringValue, utilizzano un evento 0> Class.Object.Changed|Changed0> modificato che si attiva con i contenuti della loro ProprietàValueBase3> . In tal modo, questo metodo fornisce un modo per rilevare le modifiche in altre proprietà di questi oggetti.
Nota che questo evento non passerà alcun argomento a una funzione connessa, quindi il valore della proprietà cambiata deve essere letto direttamente all'interno di uno script.
Limitazioni
L'evento restituito da questo metodo non brucia per le modifiche fisiche, come
Inoltre, l'evento restituito potrebbe non essere attivato su ogni modifica delle proprietà che cambia molto frequentemente, e / o potrebbe non essere attivato su tali proprietà tutti/tutte. È raccomandato di testare attentamente per le modifiche delle proprietà che hanno un impatto sulla logica di gioco.
Parametri
La proprietà a cui connettersi.
Restituzioni
Un segnale che si attiva ogni volta che la proprietà cambia.
Campioni di codice
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")
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 restituisce vero se la classe dell'oggetto è equivalente a o un sottoclassificatore di una classe specificata. Questa funzione è simile agli operatori #Class.Object.className|className in altre lingue e forma di <
La funzione viene generalmente utilizzata per testare se un oggetto è una sorta di parte, come Part o WedgePart , che eredita da <
local function paintFigure(character, color)
-- iterate sui figli degli oggetti del personaggio
for _, child in character:GetChildren() do
-- Filtra gli oggetti non parte, come camicie, pantaloni e umanoidi
-- R15 usa MeshPart e R6 usa Part, quindi usiamo BasePart qui per rilevare entrambi:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(game.Players.Player.Character, BrickColor.new("Bright blue"))
Poiché tutte le classi ereditano da Object, chiamare object:IsA("Object") restituirà sempre vero.
Parametri
La classe contro cui sarà controllata la classe dell'oggetto. Sensibile ai casi.
Restituzioni
Descrive se la classe dell'oggetto corrisponde o è una sottoclassa della classe fornita.
Campioni di codice
local Workspace = game:GetService("Workspace")
print(Workspace:IsA("Workspace")) -- true
print(Workspace:IsA("BasePart")) -- false
print(Workspace:IsA("Instance")) -- true
Eventi
Changed
Questo evento si attiva immediatamente dopo che una proprietà dell'oggetto è cambiata e funziona con la maggior parte dei casi d'uso (vedi le limitazioni qui sotto). Il nuovo valore di una proprietà cambiata non è non passato come parametro quindi deve essere accessato usando object[property] . Ad esempio:
object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)
Se sei interessato solo ad ascoltare il cambiamento di una Proprietà, considera di utilizzare il metodo GetPropertyChangedSignal() invece.
Per ValueBase oggetti come IntValue e StringValue, questo evento si attiva solo quando la proprietà 1> Value1> dell'oggetto cambia. Per rilevare altre modifiche in 4> Class.ValueBase4> oggetti, usa 7>
Limitazioni
Questo evento non non fa fuoco per le modifiche fisiche, come quando il Class.Base
Inoltre, questo evento potrebbe non essere attivato su ogni modifica delle proprietà che cambia molto frequentemente e / o potrebbe non essere attivato su tali proprietà tutti/tutte. È raccomandato di testare attentamente le modifiche delle proprietà che hanno un impatto sulla logica di gioco.
Parametri
Il nome della proprietà che è cambiata.
Campioni di codice
-- 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"
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