Object
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
เป็นคลาสเริ่มต้นสำหรับทุกคลาสในหินคลาสของ Roblox เป็นเรื่องของมารยาททั้งหมดของ Roblox ที่จะมีสมาชิกทั้งหมดของเป็นเรื่องของมารยาททั้งหมด ไม่สามารถสร้างเป็นได้โดยตรง
สรุป
วิธีการ
รับเหตุการณ์ที่เกิดขึ้นเมื่อสมบัติส่วนหนึ่งของตัวองค์เปลี่ยนแปลง
กลับ true หากคลาสของวัตถุตรงกับหรือมีความสมบูรณ์จากคลาสที่กำหนด
อีเวนต์
ได้รับการยิงทันทีหลังจากเปลี่ยนแปลงสถานะของตัวองค์กับบางข้อจํากัด
คุณสมบัติ
ClassName
สตริงที่อ่านเท่านั้นที่แทนที่คลาสนี้ Object เป็นของ
สมบัตินี้สามารถใช้กับตัวแปรอื่น ๆ พิมพ์Object:IsA() หรือ Instance:FindFirstChildOfClass()
หมายเหตุคุณสมบัตินี้อ่านเฉพาะและไม่สามารถเปลี่ยนแปลงได้โดยสคริปต์ ผู้พัฒนาที่ต้องการเปลี่ยนคลาสของวัตถุจะต้องสร้าง Object ใหม่
ในขณะที่ Object:IsA() ไม่สามารถใช้ ClassName เพื่อตรวจสอบว่าวัตถุนั้นเป็นของคลาสที่เฉพาะเจาะจงโดยไม่เกี่ยวข้องกับการมีสมาชิกคลาส โดยเฉพาะ:
for _, child in workspace:GetChildren() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
วิธีการ
GetPropertyChangedSignal
วิธีนี้กลับมาเป็นอีเว้นที่เกิดขึ้นเมื่อคุณสมบัติที่กำหนดได้เปลี่ยนแปลงตามที่เกิดขึ้นจริง ยกเว้นว่ามันจะเพียงแค่ได้รับการเปลี่ยน
ValueBase วัตถุ เช่น IntValue และ StringValue ใช้งาน กิจกรรม 0> Class.Object.Changed|Changed0> ที่ปรับแต่ง ซึ่งจะเปิดใช้งานด้วยเนื้อห
โปรดทราบว่าเหตุการณ์นี้จะไม่ส่งค่าตัวละครที่เปลี่ยนแปลงให้กับฟังก์ชันที่เชื่อมต่อ ดังนั้นค่าของสมบัติที่เปลี่ยนแปลงจะต้องอ่านโดยตรงภายในสคริป
ข้อจํากัด
เหตุการณ์ที่ได้รับการรีเทิร์นโ
นอกจากนี้ การเหตุการณ์ที่กลับมาอาจไม่ได้เกิดขึ้นทุกครั้งที่เปลี่ยนแปลงสมบัติสมบัติบ่อยเกินไป และ/หรืออาจไม่ได้เกิดขึ้นสำหรับสมบัติสมบัติเหล่านี้เลย มันเป็นเรื่องที่แนะนำให้ทดสอบอย่างรอ
พารามิเตอร์
รายการที่ต้องการเชื่อมต่อ
ส่งค่ากลับ
สัญญาณที่ยิงเมื่ออายุการใช้งานของสินค้าเปลี่ยนแปลง
ตัวอย่างโค้ด
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 จะกลับ true หากคลาสของวัตถุเป็น เทียบเท่ากับ หรือ subclass ของคลาสที่กำหนดไว้ ฟัง
โดยทั่วไป, ฟังก์ชันนี้ใช้เพื่อทดสอบว่าวัตถุเป็นของชนิดใด,
local function paintFigure(character, color)
-- ทำซ้ำเหนือวัตถุลูกของตัวละคร
for _, child in character:GetChildren() do
-- กรองวัตถุที่ไม่ใช่ส่วน เช่นเสื้อเสื้อ
-- R15 ใช้ MeshPart และ R6 ใช้ Part, ดังนั้นเราจึงใช้ BasePart ที่นี่เพื่อตรวจจับทั้งสอง:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(game.Players.Player.Character, BrickColor.new("Bright blue"))
เนื่องจากทุกคลาสมีการมีสมาชิกจาก Object ดังนั้นการเรียก object:IsA("Object") จะส่งคืนเสมอ
พารามิเตอร์
คลาสที่ระบุว่าคลาสของวัตถุจะตรวจสอบ
ส่งค่ากลับ
อธิบายว่าคลาสของวัตถุตรงหรือไม่ หรือเป็นคลาสลูกของคลาสที่ให้
ตัวอย่างโค้ด
local Workspace = game:GetService("Workspace")
print(Workspace:IsA("Workspace")) -- true
print(Workspace:IsA("BasePart")) -- false
print(Workspace:IsA("Instance")) -- true
อีเวนต์
Changed
เหตุการณ์นี้จะเกิดขึ้นทันทีหลังจากที่ค่าสมบัติของวัตถุเปลี่ยนแปลงและทำงานร่วมกับส่วนใหญ่ของกรณีการใช้งาน (ดูข้อจํากัดด้านล่าง) มีค่าใหม่ของวัตถุเปลี่ยนแปลงคือ ไ
object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)
หากคุณสนใจเฉพาะเกี่ยวกับการเปลี่ยนแปลงของโปรไฟล์ที่เฉพาะเจาะจงเท่านั้น โปรดพิจารณาใช้วิธีการ GetPropertyChangedSignal() แทน
สำหรับวัตถุ ValueBase เช่น IntValue และ StringValue อีเวนต์นี้จะเริ่มเฉพาะเมื่อสมบัติของวัตถุเปลี่ยนแปล
ข้อจํากัด
เหตุการณ์นี้ไม่ได้เกิดขึ้นสำหรับก
นอกจากนี้ เหตุการณ์นี้อาจไม่เกิดขึ้นทุกครั้งที่เปลี่ยนแปลงสมบัติสินค้าที่เปลี่ยนแปลงบ่อยมากหรือไม่ และ/หรืออาจไม่เกิดขึ้นเลยสำหรับสมบัติสินค้าดังกล่าวทั้งหมด มันเป็นการแนะนำให้คุณทดสอบอ
พารามิเตอร์
ชื่อของสมบัติที่เปลี่ยนแปลง
ตัวอย่างโค้ด
-- 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