Instance
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
ตัวอินสแตนซ์เป็นคลาสเบื้องต้นสำหรับทุกคลาสในหน้ารายการของ Roblox ที่สามารถเป็นส่วนหนึ่งของต้นไม้ข้อมูลได้ ไม่สามารถสร้างตัวอินสแตนซ์ได้โดยตรง
ตัวอินสแตนซ์มีหน้าที่พิเศษที่เรียกว่า Instance.new() ซึ่งใช้เพื่อสร้างวัตถุผ่านทางรหัส ฟังก์ชันนี้ใช้ชื่อคลาสเป็นตัวประกายและสร้างวัตถุที่สร้างขึ้น
สรุป
คุณสมบัติ
กำหนดว่า Instance และบุตรหลานของมันสามารถเคลื่อนย้ายได้โดยใช้ Instance:Clone() และสามารถบันทึก/เผยแพร่ได้
ชุดของคุณสมบัติที่สามารถใช้สำหรับสคริปต์ภายในคอนเทนเนอร์นี้
รหัสประจำตัวผู้ไม่เฉพาะของ Instance
กำหนดพ่อค้าของระดับการจัดระเบียบันทึกของ Instance
คุณสมบัติที่ขาดหายไปที่ใช้ปกป้องวัตถุ CoreGui
เปลี่ยนให้ตัวอินสแตนซ์เป็นคอนเทนเนอร์ทรายขีด
วิธีการ
ใช้แท็กกับตัวอินสแตนซ์
ฟังก์ชันนี้ทำลายเด็กของตัวอินสแตนซ์ทั้งหมด
สร้างคันเลี้ยงของตัวอินสแตนซ์และลูกหลานทั้งหมดของมันโดยไม่เป็นระเบียบาลในการที่ไม่ใช่ Archivable
ตั้งค่าสมบัติของ Instance.Parent ให้เป็น zero, ล็อคสมบัติของ Instance.Parent และเชื่อมต่อการเชื่อมต่อทั้งหมดและเรียก Destroy ที่ทุกลูก
กลับสุนัขบรรพบุรุษต้นแบบแรกของ Instance ซึ่งมี Instance.Name เท่ากับชื่อที่ให้
กลับสุดกำเนิดต้นแรกของ Instance ซึ่ง Object.ClassName เท่ากับชื่อของชนิดที่ให้
กลับสุดกำเนิดต้นแรกของ Instance สำหรับผู้ที่ Object:IsA() กลับสำหรับชื่อของชนเผ่าที่กำหนดไว้
กลับลูกคนแรกของ Instance ที่พบด้วยชื่อที่ให้
กลับค่าเรียนแรกของ Instance ซึ่ง ClassName เท่ากับชื่อของชายคนแรกที่ให้
กลับค่าเรียนแรกของ Instance สำหรับผู้ที่ Object:IsA() กลับค่าเรียนให้สำหรับชื่อของการให้นี้
กลับค่าน้องต้นแรกที่พบด้วย Instance.Name
กลับส่วน Actor ที่เกี่ยวข้องกับตัวอินสแตนซ์
กลับค่าที่ได้รับการกำหนดไว้ให้แก่ชื่อค่าตัวละคร
กลับอีเวนต์ที่เกิดขึ้นเมื่อค่าตัวที่ให้ได้เปลี่ยนแปลง
อินสแตนซ์
กลับรายการที่มีลูกหนองของตัวอินสแตนซ์ทั้งหมด
กลับสตริงที่เข้ารหัสของไอดีของแดชบอร์ดที่ใช้ภายในโดย Roblox
กลับรายการที่มีลูกหลานของตัวอย่างทั้งหมด
อินสแตนซ์
อินสแตนซ์
ตรวจสอบว่ามีแท็กให้หรือไม่
กลับ true หาก Instance เป็นบรรพบุรุษของบรรพบุรุษที่ให้ไว้
กลับ true หาก Instance เป็นลูกหลานของบรรพบุรุษที่ให้
ลบแท็กออกจากอินสแตนซ์
ตั้งค่าค่าตัวละครที่ให้ไว้ให้กับค่าที่ให้ไว้
กลับไปที่ลูกของ Instance ด้วยชื่อที่ให้ หากลูกไม่มีอยู่ มันจะสร้างกระทู้ปัจจุบันจนกว่ามันจะทำ
อีเวนต์
เกิดขึ้นเมื่อสมาชิก Instance.Parent ของวัตถุหรือหนึ่งในบรรพบุรุษของวัตถุถูกเปลี่ยนแปลง
เปิดให้บริการเมื่อค่าตัวละครถูกเปลี่ยนแปลงใน Instance
จะเริ่มหลังจากที่วัตถุนี้ได้รับการผูกโยชนานี้ Instance
เกิดขึ้นหลังจากที่เด็กถูกนำออกจาก Instance นี้
จะเริ่มหลังจากที่ลูกหลานถูกเพิ่มลงใน Instance
เปิดทันทีก่อนที่จะมีการลบลง Instance ลง
เปิดทันทีก่อน (หรือล่าช้าจนกว่า) วินิจฉัยจะถูกทำลายโดย Instance:Destroy()
คุณสมบัติ
Archivable
สมบัตินี้กำหนดว่าต้องรวมตัวอินสแตนซ์เมื่อประสบการณ์ได้รับการเผยแพร่หรือบันทึกหรือเมื่อ Clone() ถูกเรี
การคัดลอกวัตถุใน Studio โดยใช้ตัวเลือก คัดลอก หรือ คัดลอก / วาง จะไม่สนใจคุณสมบัติของ 1> Class.Instance.Archivable|Archivable1> ของต
local part = Instance.new("Part")print(part:Clone()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
ชุดคุณสมบัติที่สามารถใช้สำหรับสคริปต์ภายในตัวอินสแตนนี้ สำหรับคุณสมบัติที่จะมีผลใช้งาน Instance.Sandboxed คุณสมบัติต้องเปิดใช้งานได้
สมบัตินี้ถูกใช้โดยคุณสมบัติทดลองใช้ ดูหน้า คุณสมบัติการสคริปต์ เพื่อขอรายละเอียดเพิ่มเติม
Name
รหัสประจำตัวผู้ไม่เฉพาะของ Instance
รายการนี้เป็นรหัสที่อธิบายวัตถุ ชื่อไม่จำเป็นต้องเป็นรหัสที่ไม่เหมือนกัน หลายบุตรของวัตถุอาจแชร์ชื่อเดียวกัน รายการชื่อใช้เพื่อให้ระดับห่วงโซ่ของวัตถุ พร้อมกับการสามาร
ชื่อของวัตถุมักใช้เพื่อเข้าถึงวัตถุผ่านห่างชั้นของแบบข้อมูลโดยใช้วิธีต่อไปนี้:
local baseplate = workspace.Baseplatelocal baseplate = workspace["Baseplate"]local baseplate = workspace:FindFirstChild("BasePlate")
เพื่อให้ใช้งานได้โดยใช้ตัวดำเนินการดอท ชื่อของวัตถุจะต้องปฏิบัติตามคำสั่งบางอย่าง ชื่อของวัตถุจะต้องเริ่มด้วยตัวอักษรหรือตัวอักษรขึ้นต้นด้วยดั
หากมีมากกว่าหนึ่งวัตถุด้วยชื่อเดียวกันเป็นพี่น้อง การพยายามใด ๆ ที่จะดัดผมอันใดก็ตามที่มีชื่อเดียวกันจะกลับไปที่เดียวของวัตถุที่พบใกล้เคีย
หมายเหตุ, อินสแตนซ์Instance:GetFullName()
Parent
ลักษณะ Instance กำหนดลักษณะพ่อค้าของลูกลูกค้า ลักษณะนี้ใช้ได้บ่อยเมื่อพูดถึงวิธีการตั้งค่าคุณสมบัตินี้:
- วัตถุเป็นวัตถุ ลูก ( พ่อ ) วัตถุอื่นเมื่อพ่อของมันติดตั้งไว้ในวัตถุนั้น
- ลูกหลาน ของ Instance คือบุตรหลานของวัตถุนั้น และบุตรหลานของวัตถุด้วย
- บรรพบุรุษของ Class.Instance คือทุกวัตถุที่ Instance เป็นลูกหลาน
มาจากคุณสมบัตินี้ที่สมาชิก API อื่น ๆ ได้รับชื่อจากนามสกุลเช่น GetChildren และ FindFirstChild
การใช้งาน Remove จะตั้งค่าค่านี้ให้เป็น zero หากเรียก Destroy จะตั้งค่าคุณสมบัติของบรรพบุรุษของ Instance
สมบัตินี้ยังใช้เพื่อจัดการว่ามีอยู่ในเกมหรือไม่ต้องการลบออก หากมีพ่อค้าใน DataModel และสมบัติ
วัตถุที่สร้างใหม่โดยใช้ Instance.new() ตั้งค่าการสร้างวัตถุที่เรียบง่ายที่สุดคือสองขั้นตอน: สร้างวัตถุแล้วกำหนดพ่อค้า
-- Create a part and parent it to the workspacelocal part = Instance.new("Part")part.Parent = workspace-- Instance new can also take Parent as a second parameterInstance.new("NumberValue", workspace)
เมื่อมีการเปลี่ยนแปลงบางอย่างในโครงสร้างของตัวอินสแตนซ์ใน DataModel เมื่อเป็นไปได้ เครื่องมืออาจต้องทำงานเพิ่มเติมภายใน (สำหรับสิ่งเช่นการเลีย
การเลียนแบบวัตถุ
วัตถุที่สร้างโดยเซิร์ฟเวอร์จะไม่เคลื่อนย้ายไปยังลูกค้าจนกว่าจะเป็นบรรพบุรุษกับวัตถุหนึ่งที่เคลื่อนย้ายไปยังมัน เมื่อสร้างวัตถุจากนั้นการตั้งค่าคุณสมบัติหลายอย่างจะ
local part = Instance.new("Part") -- หลีกเลี่ยงการใช้ตัวแปรที่สองที่นี่part.Anchored = truepart.BrickColor = BrickColor.new("Really red")-- อาจมีการเปลี่ยนแปลงทรัพย์สินอื่น ๆ อีกมากมายที่นี่...-- ตั้งค่าพ่อของล่าสุดเสมอ!part.Parent = workspace
อย่างไรก็ตามหากคุณเป็นพ่อของชิ้นส่วนของคุณไปยัง Model ที่ยังไม่ได้ตั้งผู้ปกครอง คุณสามารถปกครองแต่ละชิ้นส่วนได้โดยไม่เป็นไร เนื่องจากแม่แต่ละชิ้นส่วนยังไม่ได้เคยแทนที่
RobloxLocked
สมบัตินี้ใช้เพื่อปกป้องวัตถุใน CoreGui บริการจากการเปลี่ยนแปลงโดยผู้ใช้ในวิธีที่ไม่ได้รับการอนุญาต มันถูกยกเลิกและไม่ทำอะไร
Sandboxed
เปลี่ยนให้ตัวอินสแตนซ์เป็นคอนเทนเนอร์แซนด์บ็อกซ์ คอนเทนเนอร์แซนด์บ็อกซ์เป็นคุณสมบัติที่มีการทดลองใช้ซึ่งจำกัดการดำเนินการที่สคริปต์ภายในคอนเทนเนอร์บางอย่างสามารถดำเนินการได้
ดูหน้า ความสามารถของสคริปต์ สำหรับรายละเอียดเพิ่มเติม
UniqueId
วิธีการ
AddTag
วิธีนี้ใช้แท็กในตัวอินสแตนซ์โดยไม่มีผลหากแท็กถูกใช้แล้ว การเพิ่มแท็กจะเปิดสัญญาณที่สร้างโดย CollectionService:GetInstanceAddedSignal() ด้วยแท็กที่ให้ไว้
หมายเหตุว่าเมื่อแท็กอินสแน็ป มักจะมีทรัพยากรบางอย่างที่ใช้ในการให้คุณสมบัติของแท็ก เช่น ก
พารามิเตอร์
ส่งค่ากลับ
ClearAllChildren
ฟังก์ชันนี้ทำลายเด็กของตัวอินสแตนซ์ทั้งหมด
ในฐานะ Instance:Destroy() เรียกตัวเองในลูกของวัตถุที่มันใช้, ฟังก์ชันนี้จะทำลายลูกหลานทั้งหมด
ทางเลือกอื่น ๆ สำหรับการล้างทั้งหมดของเด็ก
หากผู้พัฒนาไม่ต้องการทำลายล้างลูกหลานทั้งหมดพวกเขาควรใช้ Instance:GetChildren() หรือ Instance:GetDescendants() เพื่อสร้างผ่านวัตถุและเลือกสิ่งที่จะทำลาย ตัวอย่างโค้ดต่อไปนี
for _, instance in object:GetDescendants() doif instance:IsA("BasePart") theninstance:Destroy()endend
ส่งค่ากลับ
ตัวอย่างโค้ด
local part = Instance.new("Part")
-- add some sparkles
for _ = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
end
print("Part has", #part:GetChildren(), "children")
--> Part has 3 children
part:ClearAllChildren()
print("Part has", #part:GetChildren(), "children")
--> Part has 0 children
Clone
คลอน สร้างคันเลี้ยงของตัวอินสแตนซ์และลูกหลานทั้งหมดของมันโดยไม่สนใจ
หากตั้งค่าค่าอ้างอิงเช่น ObjectValue.Value ในตัวอินสแตนซ์ที่เคลียดโคลน ค่าของคุณสมบัติของคัดลอกจะขึ้นอยู่กับค่าของต้นฉบับ:
- หากค่าอ้างอิงอ้างถึงตัวอย่างที่เป็น นอกจากนี้ยังมีการเคลื่อนย้ายอยู่ด้วย คัดลอกจะอ้างถึงคัดลอก
- หากลังค้างไปยังตัวอ้างที่เป็นวัตถุที่ไม่ได้ ไม่ใช่ คลอนจากต้นฉบับ ค่าเดียวกันจะถูกเก็บไว้ในคัดลอก
ส่งค่ากลับ
ตัวอย่างโค้ด
local Workspace = game:GetService("Workspace")
-- Get a reference to an existing object
local model = script.Parent.Model
-- Create a clone of the model
local clone = model:Clone()
-- Move the clone so it's not overlapping the original model
clone:PivotTo(model.PrimaryPart.CFrame - (Vector3.xAxis * 10))
-- Add the clone to the Workspace
clone.Parent = Workspace
Destroy
ตั้งค่าสมบัติของ Instance.Parent ให้เป็น zero ล็อคสมบัติของ Instance.Parent และดึงการเชื่อมต่อทั้งหมดออกจากกันและเรียก Destroy ที
เคล็ดลับ: หลังจากโทรทิ้งที่ Destroy บนวัตถุใด ๆ ตั้งค่าแปรที่อ้างถึงวัตถุ (หรือลูกหลานของวัตถุ) ให้เป็นโมฆะ นี่จะป้องกันให้โค้ดของคุณไม่สามารถเข้าถึงอะไรที่จะทำกับวัตถุได้
local part = Instance.new("Part")part.Name = "Hello, world"part:Destroy()-- อย่าทำสิ่งนี้:print(part.Name) --> "สวัสดี โลก"-- ทำเช่นนี้เพื่อป้องกันให้แถวด้านบนไม่ทำงาน:part = nil
เมื่อ Instance ถูกทำลายโดยวิธีนี้มันจะไม่สามารถใช้ได้เพราะสมบัติของ Instance.Parent ถูกล็อกไว้ เพื่อให้สิ่งที่เป็น Parent ได้รับการลบออกไปชั่วคราว
object.Parent = nilwait(2)object.Parent = workspace
เพื่อทำลายวัตถุหลังจากระยะเวลาที่กำหนดไว้ใช้ Debris:AddItem()
ส่งค่ากลับ
ตัวอย่างโค้ด
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
กลับสุนัขบรรพบุรุษต้นแบบแรกของ Instance ซึ่งมี Instance.Name เท่ากับชื่อที่ให้
ฟังก์ชันนี้ทำงานขึ้นไป หมายถึงมันเริ่มที่ Instance.Parent อินสแตนซ์และทำงานขึ้นไปยัง DataModel หากไม่พบบรรพบุรุษที่ตรงกันใด ๆ จะกลับไปที่ nil
ตัวอย่างโค้ดต่อไปนี้จะพบบรรพบุรุษต้นแบบของวัตถุที่มีชื่อว่า "รถ"
local car = object:FindFirstAncestor("Car")
สำหรับตัวแปรของคุณสมบัตินี้ที่ค้นหาบรรพบุรุษของคลาสที่กำหนด โปรดดู Instance:FindFirstAncestorOfClass() และ Instance:FindFirstAncestorWhichIsA()
พารามิเตอร์
Class.Instance.Name ที่จะมองหา
ส่งค่ากลับ
FindFirstAncestorOfClass
กลับสุดกำเนิดต้นแรกของ Instance ซึ่ง Object.ClassName เท่ากับชื่อของชนิดที่ให้
ฟังก์ชันนี้ทำงานขึ้นไป หมายถึงมันเริ่มที่ Instance.Parent อินสแตนซ์และทำงานขึ้นไปยัง DataModel หากไม่พบบรรพบุรุษที่ตรงกันใด ๆ จะกลับไปที่ nil
การใช้งานทั่วไปของคุณสมบัตินี้คือการค้นหาว่า Model เป็นเจ้าของ BasePart
local model = part:FindFirstAncestorOfClass("Model")
คุณสมบัตินี้เป็นตัวแปรของ Instance:FindFirstAncestor() ซึ่งตรวจสอบสมบัติ Object.ClassName โดยไม่ใช่ Instance.Name นอกจากนี้ยังมี
พารามิเตอร์
Class.Object.className ที่จะมองหา
ส่งค่ากลับ
FindFirstAncestorWhichIsA
กลับสุดกำเนิดต้นแรกของ Instance สำหรับผู้ที่ Object:IsA() กลับสำหรับชื่อของชนเผ่าที่กำหนดไว้
ฟังก์ชันนี้ทำงานขึ้นไป หมายถึงมันเริ่มที่ Instance.Parent อินสแตนซ์และทำงานขึ้นไปยัง DataModel หากไม่พบบรรพบุรุษที่ตรงกันใด ๆ จะกลับไปที่ nil
ในขณะที่ Instance:FindFirstAncestorOfClass() ไม่ใช้ Object:IsA() ซึ่งเคารพการมีชีวิตรอดของคลาส โดยปกติ:
print(part:IsA("Part")) --> trueprint(part:IsA("BasePart")) --> trueprint(part:IsA("Instance")) --> true
ดังนั้นตัวอย่างรหัสต่อไปนี้จะกลับค่ากำเนิดต้นแรกของ BasePart โดยไม่เป็นไปตามว่ามันเป็น WedgePart หรือ MeshPart หรือ 2>Class.Part2>
local part = object:FindFirstAncestorWhichIsA("BasePart")
ดูเพิ่มเติม, Instance:FindFirstAncestor() .
พารามิเตอร์
Class.Object.className ที่จะมองหา
ส่งค่ากลับ
FindFirstChild
กลับลูกคนแรกของ Instance ด้วยชื่อที่กำหนด
หรือ nil หากไม่มีลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลู
ตรวจสอบความถูกต้องของวัตถุ
ต้องการตรวจสอบว่ามีวัตถุหรือไม่ก่อนที่จะดำเนินการต่อ การพยายามที่จะดัดผมลูกชายโดยใช้ตัวดำเนินการดอทจะทำให้เกิดข้อผิดพลาดหากลูกชายไม่มีอยู่
-- ข้อผิดพลาดต่อไปนี้จะเกิดขึ้นหากไม่มี Part ใน Workspace:workspace.Part.Transparency = 0.5
ใช้ FindFirstChild เพื่อตรวจสอบส่วนที่ต้องการก่อนแล้วใช้ if-句เพื่อดำเนินการโค้ดที่ต้องการ
local part = workspace:FindFirstChild("Part")if part thenpart.Transparency = 0.5end
การค้นหาเด็กที่ชื่อตรงกับสมบัติสมบัติ
ในบางครั้ง Name ของวัตถุอาจเป็นเหมือน Class.Instance.Parent|Parent ของโปรไฟเนสของมัน เมื่อใช้ตัวดำเนินการดอท โปรไฟล์จะได้รับความได้เปรียบเหนือบุตรหลานหากพวกเขามีชื่อเดียวกัน
ในตัวอย่างต่อไปนี้, Folder ที่มีชื่อว่า "สี" ได้ถูกเพิ่มลงใน Part ซึ่งมีสมบัติสี Part.Color ด้วย 2> Class.Part.Color2> เรีย
local part = Instance.new("Part")local folder = Instance.new("Folder")folder.Name = "Color"folder.Parent = partlocal c = part.Color --> สี 3local c2 = part:FindFirstChild("Color") --> The Folder
ประโยชน์หนึ่งในการใช้ FindFirstChild() รหัส
หมายเหตุประสิทธิภาพ
FindFirstChild() ใช้เวลาประมาณ 20% นานกว่าการใช้ดอ
พารามิเตอร์
Class.Instance.Name ที่จะค้นหา
ว่าควรให้ค้นหาทำซ้ำหรือไม่
ส่งค่ากลับ
ตัวอย่างโค้ด
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
กลับค่าเรียนแรกของ Instance ซึ่ง ClassName เท่ากับชื่อของชายคนแรกที่ให้
หากไม่พบเด็กที่ตรงกัน ฟังก์ชันนี้จะกลับมาเป็นศูนย์
ในขณะที่ Instance:FindFirstChildWhichIsA() ฟังก์ชันนี้ใช้เฉพาะวัตถุที่มีคลาสตรงกับชื่อเรียกของการให้มาเท่านั้น โดยไม่สนใจการมีคลาสมดอก
ผู้พัฒนาที่กำลังมองหาเด็กตามชื่อควรใช้ Instance:FindFirstChild() แทน
พารามิเตอร์
Class.Object.className ที่จะมองหา
ส่งค่ากลับ
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid
while not humanoid do
humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
character.ChildAdded:Wait()
end
end
FindFirstChildWhichIsA
กลับค่าเรียนแรกของ Instance สำหรับผู้ที่ Object:IsA() กลับค่าเรียนให้สำหรับชื่อของการให้นี้
หากไม่พบเด็กที่ตรงกันใด ๆ ฟังก์ชันนี้จะส่งผลให้ไม่มีอะไรตรงกัน หากค่าตัวละครที่เป็นรูปลักษณ์ของ Instance เป็นจริง ฟังกันทั้งหมดจะค้นหาลูกหลานทั้งหมดแทนที่จะเป็นเพียงลูกหลานที่เป็
ในขณะที่ Instance:FindFirstChildOfClass() ไม่ได้ใช้ Object:IsA() ซึ่งเป็นมาตรฐานการมีชีวิตรอดของคลาส สำหรับตัวอย่าง:
print(part:IsA("Part")) --> ใช่print(part:IsA("BasePart")) --> ใช่print(part:IsA("Instance")) --> true
ดังนั้นตัวอย่างรหัสต่อไปนี้จะกลับค่าเด็ก BasePart ครั้งแรก ไม่ว่าจะเป็น WedgePart หรือ MeshPart หรือ 1> Class.Part1>
local part = object:FindFirstChildWhichIsA("BasePart")
ผู้พัฒนาที่กำลังมองหาเด็กโดยชื่อควรใช้ Instance:FindFirstChild() แทน
พารามิเตอร์
Class.Object.className ที่จะค้นหา
ว่าควรให้ค้นหาทำซ้ำหรือไม่
ส่งค่ากลับ
FindFirstDescendant
กลับค่าน้องต้นแรกที่พบด้วย Instance.Name
อินสแตนซ์เพื่อค้นหาบุตรหลานคนแรกของตัวอย่างให้พิจารณาใช้ พารามิเตอร์ recursive บน Instance:FindFirstChild() แทน
พารามิเตอร์
Class.Instance.Name ที่จะค้นหา
ส่งค่ากลับ
GetActor
หาก Instance เป็น Class.Actor แล้ว Actor หากไม่มีบรรพบุรุษใด ๆ เป็น Class.Actor แล้วผลลัพธ์จะเป็น Actor
ส่งค่ากลับ
GetAttribute
วิธีนี้กลับค่าที่ได้รับการกำหนดไว้ให้กับค่านามสกุลที่กำหนด หากไม่มีค่าที่ได้รับการกำหนดไว้ให้กับค่านามสกุลนั้น nil จะกลับมา
เช่นเดียวกับตัวอย่างโค้ดต่อไปนี้จะตั้งค่าและจากนั้นรับค่าของคอลัมน์ PositionInitial ของตัวอินสแตนซ์:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
ดูเพิ่มเติม
- Instance:SetAttribute() ซึ่งตั้งค่าคุณสมบัติด้วยชื่อที่ให้ไว้
- Instance:GetAttributes() ซึ่งเป็นไดอารีของคู่มูลค่าสำหรับแต่ละค่าตัวของอินสแตนซ์
พารามิเตอร์
ชื่อของค่าตัวละครที่กำลังถูกดึง
ส่งค่ากลับ
มูลค่าที่ได้รับการกำหนดชื่อของค่าตัวละครที่กำหนด หากไม่มีค่าตัวละครใด ๆ ได้รับการกำหนด nil จะถูกส่งกลับ
GetAttributeChangedSignal
ฟังก์ชันนี้กลับมาเป็นอีเวนต์ที่มีพฤติกรณ์เหมือนกับ Changed อีเวนต์ ยกเว้นว่ามันจะเพียงแค่ได้รับการเปลี่ยนแปลงของค่าตัวละครที่กำหนดเท่านั้น; เราเห็
โดยทั่วไปแล้วจะเป็นความคิดที่ดีที่จะใช้วิธีนี้แทนที่จะเชื่อมต่อไปยัง Changed ด้วยคุณสมบัติที่ตรวจสอบชื่อคุณสมบัติ การโทรกลับไปยังวิธีนี้ในเดียวกับคุณสมบัติที่มีช
ตัวอย่างโค้ดต่อไปนี้ส่งสัญญาณที่เปิดใช้งานฟังก์ชัน attributeChanged() เมื่อค่าตัวละคร PositionInitial เปลี่ยนแปลง:
local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local function attributeChanged()
print("Attribute changed")
end
part:GetAttributeChangedSignal("InitialPosition"):Connect(attributeChanged)
ดูเพิ่มเติม Instance.AttributeChanged ซึ่งจะเรียกใช้เมื่อมีการเปลี่ยนแปลงค่าตัวละครใด ๆ บนตัวอินสแตนซ์
พารามิเตอร์
ชื่อของค่าตัวละครที่กำหนดสำหรับการเปลี่ยนแปลงสัญญาณ
ส่งค่ากลับ
เหตุการณ์ที่เกิดขึ้นเมื่อค่าตัวที่ให้ไว้เปลี่ยนแปลง
GetAttributes
วิธีนี้กลับรายการคู่ค่าสำคัญสำหรับแต่ละลักษณะที่มีคีย์เป็นชื่อลักษณะและมีค่าเป็นค่าไม่ใช่ nil ค่า
เช่นในตัวอย่างรหัสต่อไปนี้จะสร้างค่าและคุณสมบัติของตัวอย่าง:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(name .. " = " .. value)end
ดูเพิ่มเติม Instance:GetAttribute() ซึ่งส่งคืนค่าที่ได้รับการกำหนดไว้ให้กับชื่อค่าที่กำหนด
ส่งค่ากลับ
พจนานุกรมของคำสากล → คู่ของตัวแปรสำหรับแต่ละลักษณะที่สตริงเป็นชื่อลักษณะและตัวแปรเป็นค่า non-nil
GetChildren
กลับรายการ (ตารางที่เรียบเรียงอย่างเลขาศาสตร์) ที่มีเด็กโดยตรงของตัวอินสแตนซ์ทั้งหมดหรือทุก ๆ Instance ที่มี Parent เท่ากับวัตถุ รายการสามารถเรียก
-- ตัวอย่างนิยมตัวเลขlocal children = workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
-- ตัวอย่างฟอร์ลูปทั่วไปlocal children = workspace:GetChildren()for i, child in children doprint(child.Name .. " is child number " .. i)end
เด็กถูกเรียงลำดับตามลำดับที่โปรไฟล์ Parent ของพวกเขาถูกตั้งไว้ในวัตถุ
ดูฟังก์ชัน GetDescendants เพิ่มเติม
ส่งค่ากลับ
รายการที่มีลูกของตัวอย่าง
ตัวอย่างโค้ด
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
กลับสตริงที่เข้ารหัสของไอดีของแดชบอร์ดที่ใช้ภายในโดย Roblox
หมายเหตุ:
- รายการนี้ได้รับการป้องกัน การพยายามที่จะใช้มันใน Script หรือ LocalScript จะทำให้เกิดข้อผิดพลาด
- รหัสดีบั๊กเป็นรหัสที่ใช้ในกระบวนการดีบั๊ก มันช่วยให้ผู้ดีบั๊กอ่านคำสั่งแต่ละรายการก่อนที่จะประมวลผลได้ โดยทั้งหมดของวัตถุใน Roblox ทำงานเหมือนกระบวนการและคำสั่งที่สามารถดีบั๊ก
- นี่อาจเป็นประโยชน์สำหรับปลั๊กอินที่ต้องการแยกวัตถุที่คล้ายกันออกจากกัน (เช่น วัตถุที่แชร์ชื่อเดียวกัน)
พารามิเตอร์
ความยาวของสเก็ต
ส่งค่ากลับ
สตริง ID การดีบั๊ก
ตัวอย่างโค้ด
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
วิธีนี้สร้างรายการที่มีทุกของลูกของวัตถุนั้น ในขณะที่วิธี Instance:GetChildren() ไม่สร้างรายการที่มีเฉพาะลูกของวัตถุเท่านั้น วิธีนี้พบลูกของวัตถุทุกลูก ลูกของทุกเด็ก และเช่นนั้
ส่งค่ากลับ
รายการที่มีลูกหลานของตัวอย่าง
ตัวอย่างโค้ด
local descendants = workspace:GetDescendants()
-- Loop through all of the descendants of the Workspace. If a
-- BasePart is found, the code changes that parts color to green
for _, descendant in pairs(descendants) do
if descendant:IsA("BasePart") then
descendant.BrickColor = BrickColor.Green()
end
end
GetFullName
กลับสตริงที่อธิบายต้นไม้ของตัวอินสแตนซ์ สตริงเป็นคําสั่งที่เชื่อมต่อกันของ Name ของตัวอ
เมื่อเรียกใช้ที่ Instance ที่ไม่ใช่ลูกหลานของ DataModel นี้ ฟังก์ชันนี้พิจารณาบรรพบุรุษทั้งหมดขึ้นไปและรวมถึงบรรพบุรุษด้านบนสุดโดยไม่มี Parent
คุณสมบัตินี้มีประโยชน์สำหรับการติดตามและการดีบั๊ก คุณไม่ควรพยายามที่จะประมวลผลสตริงที่กลับมาสำหรับการดำเนินการที่มีประโยชน์ใด ๆ คุณสมบัตินี้ไม่หลบหนีระยะเวลา (หรือสัญ
ส่งค่ากลับ
ตัวอย่างโค้ด
-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire
local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera
GetTags
อินสแตนซ์คุณสามารถเพิ่มแท็กได้ทั้งใน Studio ในหน้า โปรไฟล์ หรือในระหว่างการประมวลผลด้วย AddTag()
วิธีนี้มีประโยชน์เมื่อคุณต้องการทำอะไรบางอย่างด้วยหลายแท็กในครั้งเดียว อย่างไรก็ตาม มันไม่สมเหตุสมผลที่จะใช้วิธีนี้เพื่อตรวจสอบว่ามีแท็กเดียวหรือไม่ แทนที่นั้นใช้
ส่งค่ากลับ
HasTag
วิธีนี้จะกลับมา true หากป้ายชื่อที่ให้ไว้ถูกเพิ่มในวัตถุ คุณสามารถเพิ่มป้ายชื่อได้ทั้งใน Studio ในหน้า โปรไฟล์ หรือในระหว่างการประมวลผลด้วย AddTag()
พารามิเตอร์
ส่งค่ากลับ
IsAncestorOf
กลับ true หาก Instance เป็นบรรพบุรุษของบรรพบุรุษที่ให้ไว้
Class.Instance ถือเป็นบรรพบุรุษของวัตถุหาก Instance.Parent หรือหนึ่งในบรรพบุรุษของวัตถุ Instance.Parent ติดตั้งไว้ที่ 1>Class.Instance1>
ดูเพิ่มเติม, Instance:IsDescendantOf() .
พารามิเตอร์
ส่งค่ากลับ
ตัวอย่างโค้ด
local Workspace = game:GetService("Workspace")
local spawnLocation = Workspace.SpawnLocation
local decal = spawnLocation.Decal
-- These statements are true
print(Workspace:IsAncestorOf(spawnLocation))
print(Workspace:IsAncestorOf(decal))
print(spawnLocation:IsAncestorOf(decal))
-- These statements are false
print(spawnLocation:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(spawnLocation))
IsDescendantOf
กลับ true หาก Instance เป็นลูกหลานของบรรพบุรุษที่ให้
Class.Instance ถือเป็นบรรพบุรุษของวัตถุหากพ่อหรือหนึ่งในพ่อของวัตถุถูกกำหนดให้เป็นวัตถุ
หมายเหตุ, DataModel เป็นลูกพี่ลูกน้องของ nil หมายถึง IsDescendantOf ไม่สามารถใช้ปารามิเตอร์ nil เพื่อตรวจสอบว่ามีการลบอาวุธหรือไม่
ดูเพิ่มเติม, Instance:IsAncestorOf() .
พารามิเตอร์
ส่งค่ากลับ
ตัวอย่างโค้ด
local part = Instance.new("Part")
print(part:IsDescendantOf(game))
--> false
part.Parent = workspace
print(part:IsDescendantOf(game))
--> true
part.Parent = game
print(part:IsDescendantOf(game))
--> true
RemoveTag
วิธีนี้จะลบแท็กออกจากอินสแตนซ์ มันจะไม่ส่งผลข้อผิดพลาดหากวัตถุไม่มีแท็ก การลบแท็กจะสร้างสัญญาณที่สร้างโดย CollectionService:GetInstanceRemovedSignal() ด้วยแท็กที่ให้
หมายเหตุว่าเมื่อแท็กอินสแนนส์จะมีความคุณว่าบางทรัพยากรจะใช้เพื่อให้ป้ายชื่อป้ายชื่อของมันโดยเฉพาะอย่างยิ่งการเชื่อมต่อกิจกรรมหรือตาราง เพื่อป้องกันการหลบหลีก
พารามิเตอร์
ส่งค่ากลับ
SetAttribute
วิธีนี้ตั้งค่าค่าตัวละครที่มีชื่อให้กับค่าที่ให้ หากค่าที่ให้นั้นเป็น nil จะถูกลบออก เนื่องจาก nil ถูกนำกลับมาโดยค่าเริ่มต้น
ตัวอย่างโค้ดต่อไปนี้จะตั้งค่าค่า Position อินสแตนซ์Vector3.new(0, 10, 0) :
local part = workspace.Partpart:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
ข้อจํากัด
ความต้องการและข้อจำกัดในการตั้งชื่อ:
- ชื่อต้องใช้เฉพาะตัวอักษรที่เป็นตัวอักษรและขีดเส้นใต้เท่านั้น
- ไม่อนุญาตพื้นที่หรือตัวอักษรที่ไม่เป็นปกติ
- ต้องเป็นตัวอักษร 100 หรือน้อยกว่านั้น
- ชื่อไม่สามารถเริ่มด้วย RBX ยกเว้นผู้โทรจะเป็นสคริปต์เครื่องหมายของ Roblox (สำหรับ Roblox)
พิมพ์จะมีข้อควรระวัง
ดูเพิ่มเติม:
- Instance:GetAttribute() ซึ่งกลับค่าที่ได้รับการกำหนดไว้ให้กับชื่อค่าตัวละครที่กำหนด
- Instance:GetAttributes() ซึ่งเป็นไดอารีของคู่มูลค่าสำหรับแต่ละค่าตัวของอินสแตนซ์
พารามิเตอร์
ตั้งค่า
มูลค่าที่กำหนดให้กับลักษณะที่กำหนด
ส่งค่ากลับ
WaitForChild
กลับค่าของลูกของ Instance ด้วยชื่อที่กำหนด หากลูกไม่มีอยู่ มันจะสร้างค่าปัจจุบันของธรรมชาติจนกว่ามันจะทำ หากประมาณ timeOut ตัวอักษรกำหนดไว้ วิธีนี้จะ
การใช้งานหลัก
WaitForChild() ผู้เล่น
โน้ต
- ฟังก์ชันนี้ไม่สามารถให้ผลได้ถ้าเด็กที่มีชื่อที่ให้ไว้มีอยู่เมื่อโทรกเรียก
- Instance:FindFirstChild() เป็นตัวเลือกที่มีประสิทธิภาพยิ่งขึ้นสำหรับ WaitForChild() สำหรับวัตถุที่คาดว่าจะมีอยู่
- หากการโทรไปยังวิธีนี้เกิน 5 วินาทีโดยไม่ได้กลับมา และไม่มีตัวแปร timeOut ได้ระบุไว้ คำเตือนจะปริ้นที่ออกมาที่ผลลัพธ์ที่เว็บไซต์อาจนำเสนอในระยะยาว
พารามิเตอร์
ส่งค่ากลับ
ตัวอย่างโค้ด
local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")
อีเวนต์
AncestryChanged
เกิดขึ้นเมื่อสมาชิก Instance.Parent ของวัตถุหรือหนึ่งในบรรพบุรุษของวัตถุถูกเปลี่ยนแปลง
เหตุการณ์นี้รวมถึงสองตัวอักษร, เด็ก และ พ่อ**เด็ก เรียกถึง 1> Class.Instance1> ที่มีอยู่จริง 4> พ่อ 4> เรียก
คุณสามารถใช้เหตุการณ์นี้เพื่อติดตามการลบของตัวอินสแตนซ์ใน Studio เช่นการลบแบบมือโปรใน Explorer หรือผ่านปลั๊กอิน หากคุณต้องการตรวจจับเมื่อตัวอินสแตนซ์ถูกทำลายโดย
พารามิเตอร์
Class.Instance ที่มี Instance.Parent เปลี่ยนแปลงแล้ว
ตัวอย่างโค้ด
local Workspace = game:GetService("Workspace")
local redPart = script.Parent.RedPart
local bluePart = script.Parent.BluePart
local changingPart = script.Parent.ChangingPart
-- Change the color of changingPart based on it's Parent
local function onAncestryChanged(part: Part, parent: Instance)
if parent == redPart then
changingPart.Color = Color3.new(1, 0, 0)
elseif parent == bluePart then
changingPart.Color = Color3.new(0, 0, 1)
else
changingPart.Color = Color3.new(1, 1, 1)
end
print(`{part.Name} is now parented to {parent.Name}`)
end
changingPart.AncestryChanged:Connect(onAncestryChanged)
-- Set changingPart's Parent property to different instances over time
while true do
task.wait(2)
changingPart.Parent = redPart
task.wait(2)
changingPart.Parent = bluePart
task.wait(2)
changingPart.Parent = Workspace
end
AttributeChanged
เหตุการณ์นี้จะเกิดขึ้นเมื่อค่าตัวใด ๆ ในตัวอินสแตนซ์เปลี่ยนแปลงได้ รวมถึงเมื่อค่าตัวถูกตั้งไว้ที่ nil
ตัวอย่างโค้ดต่อไปนี้เชื่อมต่อคุณสมบัติ attributeChanged() ให้เปิดใช้งานเมื่อหนึ่งในคุณสมบัติของชิ้นส่วนเปลี่ยนแปลง
local part = workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)
ดูเพิ่มเติม Instance:GetAttributeChangedSignal() ซึ่งเป็นอีเวนต์ที่เกิดขึ้นเมื่อค่าตัวละครที่กำหนดเปลี่ยนแปลง
พารามิเตอร์
ชื่อของค่าตัวละครที่เปลี่ยนแปลง
ChildAdded
จะเริ่มหลังจากที่วัตถุนี้ได้รับการผูกโยชนานี้ Instance
หมายเหตุเมื่อใช้คุณสมบัตินี้บนลูกค้าเพื่อตรวจจับวัตถุที่สร้างโดยเซิร์ฟเวอร์มันจำเป็นต้องใช้ Instance:WaitForChild() เมื่อดำเนินการดัดผมต้นไม้ของวัตถุเหล่านี้
workspace.ChildAdded:Connect(function(child)
-- need to use WaitForChild as descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)
หมายเหตุ, คุณสมบัตินี้ใช้ได้เฉพาะเด็กทันทีของ Instance เท่านั้น สำหรับคุณสมบัติที่จับการลงโทษทั้งหมดใช้ Instance.DescendantAdded .
ดูเพิ่มเติม, Instance.ChildRemoved .
พารามิเตอร์
Class.Instance ที่เพิ่มเข้ามาแล้ว
ตัวอย่างโค้ด
local function onChildAdded(instance)
print(instance.Name .. " added to the workspace")
end
workspace.ChildAdded:Connect(onChildAdded)
local part = Instance.new("Part")
part.Parent = workspace --> Part added to the Workspace
ChildRemoved
เกิดขึ้นหลังจากที่เด็กถูกนำออกจาก Instance นี้
ลบอ้างอิงถึงเมื่อพ่อของวัตถุถูกเปลี่ยนจากนี้ Instance เป็นสิ่งอื่นนอกจากนี้ Instance โปรดทราบว่าเหตุการณ์นี้จะเกิดขึ้นเมื่อลูกชายถูกทำลาย (โด
ฟังก์ชันนี้ทำงานได้เฉพาะสำหรับบุตรหลานทันทีของ Instance สำหรับฟังก์ชันที่จับการเริ่มต้นทั้งหมดใช้ Instance.DescendantRemoving
ดูเพิ่มเติม Instance.ChildAdded .
พารามิเตอร์
Class.Instance ที่ถูกลบออก
ตัวอย่างโค้ด
local function onChildRemoved(instance)
print(instance.Name .. " removed from the workspace")
end
workspace.ChildRemoved:Connect(onChildRemoved)
local part = Instance.new("Part")
part.Parent = workspace
task.wait(2)
part:Destroy()
DescendantAdded
กิจกรรม DescendantAdded จะเริ่มต้นขึ้นหลังจากที่ลูกหลานได้รับการเพิ่มใน Instance
เมื่อ Added ไฟสำหรับลูกหลานของทุกคน, การประกอบพ่อค้ามาที่ Instance จะเปลี่ยนเหตุการณ์สำหรับคนนี้และลูกหลานทั้งหมดของเขาเป็นอิสระ
ผู้พัฒนาเท่านั้นที่สนใจเด็กทันทีของ Instance ควรใช้ Instance.ChildAdded แทน
ดูเพิ่มเติม Instance.DescendantRemoving .
พารามิเตอร์
Class.Instance ที่เพิ่มเข้ามาแล้ว
ตัวอย่างโค้ด
local function onDescendantAdded(descendant)
print(descendant)
end
workspace.DescendantAdded:Connect(onDescendantAdded)
local part = Instance.new("Part")
part.Parent = workspace
DescendantRemoving
เหตุการณ์นี้จะเริ่มต้น ทันทีก่อน วัตถุประสงค์ Instance อินสแตนซ์ Class.Instance.Parent|Parent เนื่องจากเหตุการณ์นี้เกิดขึ้นก่อนที่จะ ลบ ของลูกหลาน ผู้ปกครองของลูกหลานจะไม่เปลี่ยนแปลงในเวลาที่เหตุการณ์นี้เกิดขึ้น หากลูกหลานเป็นลูกหลานของผู
หากลูกหลานมีบุตร เหตุการณ์นี้จะเกิดขึ้นก่อนลูกหลานของลูกหลาน และต่อมาด้วยลูกหลานของลูกหลาน
คำเตือน
เหตุการณ์นี้จะเกิดขึ้นกับวัตถุลูกหลานที่กำลังถูกลบออก การพยายามที่จะตั้ง Parent ของลูกหลานให้เป็นสิ่งอื่นจะล้มเหลว ด้านล่างเป็นตัวอย่างที่แสดงให้เห็นนี้:
workspace.DescendantRemoving:Connect(function(descendant)
-- Do not manipulate the parent of the descendant in this function!
-- This event fires BECAUSE the parent was manipulated, and the change hasn't happened yet
-- Therefore, it is problematic to change the parent like this:
descendant.Parent = game
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
ดูเพิ่มเติม DescendantAdded .
พารามิเตอร์
Class.Instance ที่กําลังจะถูกลบออก
ตัวอย่างโค้ด
workspace.DescendantRemoving:Connect(function(descendant)
print(descendant.Name .. " is currently parented to " .. tostring(descendant.Parent))
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
--> Part is currently parented to Workspace
print(part.Parent)
--> nil
Destroying
Class.Instance จะไม่เคยถูกลบออกจากหน่วยความจำเมื่อคุณสมบัติที่เชื่อมต่อยังคงใช้งานอยู่ อย่างไรก็ตามหากคุณสมบัตินั้นปรากฏขึ้นในทุกที่ คุณสมบัตินั้นจะเป็นบรรพบุรุษ
หากสมบัติของ Workspace.SignalBehavior ตั้งค่าไว้ที่ Enum.SignalBehavior.Immediate เหตุการณ์นี้จะเกิดขึ้นโดยทันทีก่อนที่ Instance หรือหนึ่งในบรรพบุรุษของมันจะถูกทำลายด้วย 1>
หากสมบัติของ Workspace.SignalBehavior ตั้งค่าไว้ที่ Enum.SignalBehavior.Deferred เหตุการณ์นี้จะเกิดขึ้นที่จุดยืนต่อไปซึ่งจะเป็นหลังจาก Instance หรือหนึ่งในบรรพบุ
ด้วยพฤติกรรม Deferred นี้จะเชื่อมต่อสคริปต์กับเหตุการณ์ Instance.Destroying ของตัวเอง เป็นเรื่องยากที่จะเชื่อมต่อสคริปต์ก่อนที่คอลแล็กจะสามารถเรียกได้ (หมา
เมื่อลบ Instance ใน Studio โดยวิธีการลบโดยตรงผ่าน Explorer หรือผ่านปลั๊กอิน Instance จะไม่ถูกทำลาย แทนที่, พ่อแม่ถูกตั้งไว้ที่ <
ตัวอย่างโค้ด
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())