Object

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Non Replicato

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

Proprietà

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Una stringa di sola lettura rappresentante la classe a cui appartiene.

Metodi

Eventi

Proprietà

ClassName

Sola Lettura
Non Replicato
Lettura Parallela

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

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

property: string

La proprietà a cui connettersi.


Restituzioni

Un segnale che si attiva ogni volta che la proprietà cambia.

Campioni di codice

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

Scrivi Parallelo

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

className: string

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

Instance:IsA()

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

property: string

Il nome della proprietà che è cambiata.


Campioni di codice

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