Object
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Objek adalah kelas dasar untuk semua kelas dalam hierarki kelas Roblox.Setiap kelas lain yang ditentukan oleh Roblox Engine mewarisi semua anggota dari Objek.Tidak mungkin untuk langsung membuat Objek.
Rangkuman
Metode
Dapatkan acara yang menembak ketika properti tertentu dari objek berubah.
Kembalikan benar jika kelas objek cocok atau mewarisi dari kelas tertentu.
Acara
Dihapus segera setelah perubahan properti objek, dengan beberapa batasan.
Properti
ClassName
Sebuah string hanya dibaca yang mewakili kelas yang ini Object milik.
Properti ini dapat digunakan dengan berbagai fungsi lain yang digunakan untuk mengidentifikasi objek berdasarkan ketik, seperti Object:IsA() atau Instance:FindFirstChildOfClass().
Perhatikan properti ini hanya dibaca dan tidak dapat diubah oleh skrip.Pengembang yang ingin mengubah kelas objek harus membuat baru Object .
Tidak seperti Object:IsA() , ClassName dapat digunakan untuk memeriksa apakah objek tersebut milik kelas tertentu mengabaikan warisan kelas. Misalnya:
for _, child in workspace:GetChildren() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
Metode
GetPropertyChangedSignal
Metode ini menghasilkan peristiwa yang berperilaku persis seperti peristiwa Changed, kecuali bahwa hanya menembak ketika properti yang diberikan berubah.Secara umum, ide yang baik adalah menggunakan metode ini alih-alih koneksi ke Changed dengan fungsi yang memeriksa nama properti.Panggilan berikutnya ke metode ini pada objek yang sama dengan nama properti yang sama mengembalikan peristiwa yang sama.
ValueBase objek, seperti IntValue dan StringValue , menggunakan acara yang dimodifikasi Changed yang menembak dengan konten properti mereka Value .Dengan demikian, metode ini memberikan cara untuk mendeteksi perubahan pada properti lain dari objek tersebut.
Perhatikan bahwa acara ini tidak akan mengirimkan argumen ke fungsi terhubung, jadi nilai properti yang diubah harus dibaca langsung dalam skrip.
Keterbatasan
Acara yang dikembalikan oleh metode ini tidak melakukan tidak api untuk perubahan terkait fisika, seperti ketika CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position , atau Orientation properti perubahan BasePart karena gravitasi.Untuk mendeteksi perubahan pada properti ini, pertimbangkan menggunakan acara berbasis fisika seperti RunService.PreSimulation .
Selain itu, acara yang dikembalikan mungkin tidak bisa menembak pada setiap modifikasi properti yang sangat sering berubah, dan/atau mungkin tidak bisa menembak untuk properti seperti itu sama semua.Disarankan agar Anda hati-hati menguji perubahan properti yang mempengaruhi logika permainan.
Parameter
Properti untuk terhubung ke.
Memberikan nilai
Sinyal yang menembak setiap kali properti berubah.
Contoh Kode
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 mengembalikan benar jika kelas objek adalah setara dengan atau subkelas dari kelas tertentu .Fungsi ini mirip dengan operator instanceof di bahasa lain, dan merupakan bentuk introspeksi jenis .Untuk mengabaikan warisan kelas, uji properti ClassName langsung sebagai gantinya.Untuk memeriksa jenis data Luau asli (number, string, dll) gunakan fungsi type dan typeof.
Umumnya, fungsi ini digunakan untuk menguji apakah objek adalah semacam bagian, seperti Part atau WedgePart , yang mewarisi dari BasePart (kelas abstrak).Sebagai contoh, jika tujuan Anda adalah mengubah semua anggota tubuh karakter menjadi warna yang sama, Anda mungkin menggunakan GetChildren untuk melingkar di atas anak-anak, lalu gunakan IsA untuk menyaring objek non- BasePart yang tidak memiliki properti BrickColor:
local Players = game:GetService("Players")
local function paintFigure(character, color)
-- Berulang atas objek anak dari karakter
for _, child in character:GetChildren() do
-- Saringkan objek non-bagian, seperti Kaus, Celana, dan Humanoid
-- R15 menggunakan MeshPart dan R6 menggunakan Part, jadi kami menggunakan BasePart di sini untuk mendeteksi keduanya:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))
Karena semua kelas mewarisi dari Object, memanggil object:IsA("Object") akan selalu mengembalikan benar.
Parameter
Kelas yang akan diperiksa kelas Objek. Sensitif kasus.
Memberikan nilai
Menggambarkan apakah kelas Objek cocok atau merupakan kelas turunan dari kelas yang diberikan.
Contoh Kode
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
Acara
Changed
Acara ini terbakar segera setelah properti objek diubah dan berfungsi dengan sebagian besar kasus penggunaan (lihat batasan di bawah).Nilai baru dari properti yang diubah adalah tidak dilewati sebagai parameter, jadi harus diakses menggunakan object[property] .Sebagai contoh:
object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)
Jika Anda hanya tertarik untuk mendengarkan perubahan satu properti tertentu, pertimbangkan untuk menggunakan metode GetPropertyChangedSignal() alih.
Untuk ValueBase objek seperti IntValue dan StringValue , acara ini hanya terjadi ketika properti objek Value berubah.Untuk mendeteksi perubahan lain pada objek ValueBase , gunakan GetPropertyChangedSignal() sebagai gantinya.
Keterbatasan
Acara ini tidak tidak memicu perubahan terkait fisika, seperti ketika CFrame , AssemblyLinearVelocity , AssemblyAngularVelocity , Position , atau Orientation properti perubahan BasePart karena gravitasi.Untuk mendeteksi perubahan pada properti ini, pertimbangkan menggunakan acara berbasis fisika seperti RunService.PreSimulation .
Selain itu, acara ini mungkin tidak terbakar pada setiap modifikasi properti yang sangat sering berubah, dan/atau mungkin tidak terbakar untuk properti seperti itu sama semua.Disarankan agar Anda hati-hati menguji perubahan properti yang mempengaruhi logika permainan.
Parameter
Nama properti yang berubah.
Contoh Kode
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