Object
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Nesne, Roblox sınıf hiyerarşisindeki tüm sınıflar için temel sınıftır.Roblox Motoru tarafından tanımlanan diğer her sınıf, Nesne'nin tüm üyelerini miras alır.Doğrudan Nesne oluşturmak mümkün değildir.
Özet
Yöntemler
Bir nesnenin belirli bir özelliği değiştiğinde ateşleyen bir olay alın.
Bir nesnenin sınıfı bir sınıftan eşleşir veya miras alırsa gerçek döndürür.
Etkinlikler
Nesnenin bir özelliği değiştikten hemen sonra, bazı sınırlamalarla ateş edilir.
Özellikler
ClassName
Bu Object sınıfa ait olan okunur yalnızca bir dize temsil eden bir dize.
Bu özellik, nesneleri yaztanımlamak için kullanılan çeşitli diğer işlevlerle birlikte kullanılabilir, örneğin Object:IsA() veya Instance:FindFirstChildOfClass().
Bu özellik yalnızca okunur ve kullanıcı tarafından değiştirilemez ve kodlar tarafından değiştirilemez.Bir nesnenin sınıfını değiştirmek isteyen geliştiriciler yerine yeni bir Object oluşturmalıdır.
Farklı olarak Object:IsA() , ClassName bir nesnenin belirli bir sınıfa ait olup olmadığını kontrol etmek için kullanılabilir. Örneğin:
for _, child in workspace:GetChildren() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
Yöntemler
GetPropertyChangedSignal
Bu yöntem, sadece verilen özellik değiştiğinde ateşlenen bir olayı döndürür; Changed olayı gibi davranan bir olay dışında.Bu yöntemi, özellik adını kontrol eden bir işlevle bağlantı yerine kullanmak genellikle iyi bir fikirdir Changed .Aynı özellik adıyla aynı nesneye yapılan sonraki bu yönteme çağrıları aynı olayı döndürür.
nesneler, örneğin ve gibi, içeriği ile ateşlenen değiştirilmiş bir etkinlik kullanır.Bu nedenle, bu yöntem bu nesnelerin diğer özelliklerindeki değişiklikleri tespit etmenin bir yolunu sağlar.
Bu etkinin bağlı bir işleve herhangi bir argüman geçirmeyeceğini unutmayın, bu nedenle değiştirilen özelliğin değeri bir senaryo içinde doğrudan okunmalıdır.
Sınırlar
Bu yöntem tarafından döndürülen olay, fiziğe ilişkin değişiklikler için ateş etmiyor , örneğin, CFrame, AssemblyLinearVelocity, AssemblyAngularVelocity, Position veya Orientation özellikleri bir BasePart değişiklik, yerçekimi nedeniyle.Bu özelliklerdeki değişiklikleri tespit etmek için, RunService.PreSimulation gibi fizik tabanlı bir olay kullanmayı düşünün.
Ayrıca, geri dönen etkinlik çok sık değişen özelliklerin her değişikliğinde ateşlenmeyebilir veya bu tür özellikler için hiç ateşlenmeyebilir.Oyun mantığını etkileyen mülk değişiklikleri için dikkatlice test etmeniz önerilir.
Parametreler
Bağlanmak için özellik.
Dönüşler
Özellik değiştiğinde ateşleyen bir sinyal.
Kod Örnekleri
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, nesnenin sınıfı eşitse veya bir sınıfın alt sınıfı ise olduğunda doğru döndürür.Bu işlev, diğer dillerdeki ⇒ operatörlerine benzer ve tip introspeksiyonu biçimidir.Sınıf mirasını görmezden gelmek için, doğrudan ClassName özellik yerine test edin.Yerli Luau veri türlerini (sayı, dizivb.) kontrol etmek için işlevler type ve typeof kullanın.
En yaygın olarak, bu işlev bir nesnenin bir tür parça olup olmadığını test etmek için kullanılır, örneğin Part veya WedgePart , çünkü bunlar BasePart 'dan (抽象 sınıf) miras alır.Örneğin, eğer hedefiniz bir karakterin tüm uzuvlarını aynı renge değiştirmekse, çocuklar üzerinde döngü yapmak için kullanabilirsiniz, ardından özelliksiz nesneleri filtrelemek için IsA'yı kullanabilirsiniz:
local Players = game:GetService("Players")
local function paintFigure(character, color)
-- Karakterin çocuk nesneleri üzerinde döngü yap
for _, child in character:GetChildren() do
-- Gömlek, Pantolon ve Humanoid gibi parça olmayan nesneleri filtrele
-- R15 MeshPart'i ve R6 Part'i kullanıyor, bu yüzden her ikisini de tespit etmek için Buradaki BasePart'i kullanıyoruz:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))
Tüm sınıflar Object 'dan miras aldığından, object:IsA("Object") 'yi çağırmak daima gerçek döndürecektir.
Parametreler
Nesnenin sınıfının kontrol edileceği sınıf. Harfli.
Dönüşler
Nesnenin sınıfının eşleştiği veya verilen sınıfın bir alt sınıfı olup olmadığını tanımlar.
Kod Örnekleri
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
Etkinlikler
Changed
Bu olay, bir nesne özelliği değiştirildikten hemen sonra ateşlenir ve çoğu kullanım durumuyla çalışır (aşağıdaki sınırlamalara bakın).Değiştirilen bir özniteliğin yeni değeri değil bir parametre olarak geçmediğinden, erişilmesi gerekir object[property] kullanarak.Örneğin:
object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)
Sadece bir özel özelliğin değişimini dinlemeye ilgi duyuyorsanız, bunun yerine GetPropertyChangedSignal() yöntemini kullanmayı düşünün.
For ValueBase nesneleri gibi IntValue ve StringValue , bu olay sadece nesnenin Value özellikleri değiştiğinde ateşlenir.ValueBase nesnelerdeki diğer değişiklikleri tespit etmek için, bunun yerine GetPropertyChangedSignal() kullanın.
Sınırlar
Bu etkinlik fiziğe ilişkin değişiklikler için ateş etmiyor , örneğin CFrame, AssemblyLinearVelocity, AssemblyAngularVelocity, Position veya Orientation özellikleri bir BasePart değişiklik nedeniyle yerçekimi tarafından yapılan.Bu özelliklerdeki değişiklikleri tespit etmek için, RunService.PreSimulation gibi fizik tabanlı bir olay kullanmayı düşünün.
Ayrıca, bu olay çok sık değişen özelliklerin her değişikliğinde ateşlenmeyebilir veya bu tür özellikler için hiç ateşlenmeyebilir.Oyun mantığını etkileyen mülk değişiklikleri için dikkatlice test etmeniz önerilir.
Parametreler
Değişen özellik adı.
Kod Örnekleri
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