Instance

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
ไม่สามารถเรียกดู

ตัวอินสแตนซ์เป็นคลาสเบื้องต้นสำหรับทุกคลาสในหน้ารายการของ Roblox ที่สามารถเป็นส่วนหนึ่งของต้นไม้ข้อมูลได้ ไม่สามารถสร้างตัวอินสแตนซ์ได้โดยตรง

ตัวอินสแตนซ์มีหน้าที่พิเศษที่เรียกว่า Instance.new() ซึ่งใช้เพื่อสร้างวัตถุผ่านทางรหัส ฟังก์ชันนี้ใช้ชื่อคลาสเป็นตัวประกายและสร้างวัตถุที่สร้างขึ้น

สรุป

คุณสมบัติ

  • อ่านพร้อมๆ กัน

    กำหนดว่า Instance และบุตรหลานของมันสามารถเคลื่อนย้ายได้โดยใช้ Instance:Clone() และสามารถบันทึก/เผยแพร่ได้

  • Capabilities:SecurityCapabilities
    การรักษาความปลอดภัยของสคริปต์ Roblox
    อ่านพร้อมๆ กัน

    ชุดของคุณสมบัติที่สามารถใช้สำหรับสคริปต์ภายในคอนเทนเนอร์นี้

  • อ่านพร้อมๆ กัน

    รหัสประจำตัวผู้ไม่เฉพาะของ Instance

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    กำหนดพ่อค้าของระดับการจัดระเบียบันทึกของ Instance

  • ซ่อนอยู่
    การรักษาความปลอดภัยของปลั๊กอิน
    อ่านพร้อมๆ กัน
    เลิกใช้แล้ว

    คุณสมบัติที่ขาดหายไปที่ใช้ปกป้องวัตถุ CoreGui

  • ไม่ซ้ำ
    การรักษาความปลอดภัยของสคริปต์ Roblox
    อ่านพร้อมๆ กัน

    เปลี่ยนให้ตัวอินสแตนซ์เป็นคอนเทนเนอร์ทรายขีด

  • UniqueId:UniqueId
    ไม่ซ้ำ
    ไม่สามารถเขียนสคริปต์
    การรักษาความปลอดภัยของ Roblox
    อ่านพร้อมๆ กัน

วิธีการ

  • AddTag(tag : string):void

    ใช้แท็กกับตัวอินสแตนซ์

  • ฟังก์ชันนี้ทำลายเด็กของตัวอินสแตนซ์ทั้งหมด

  • สร้างคันเลี้ยงของตัวอินสแตนซ์และลูกหลานทั้งหมดของมันโดยไม่เป็นระเบียบาลในการที่ไม่ใช่ Archivable

  • Destroy():void

    ตั้งค่าสมบัติของ Instance.Parent ให้เป็น zero, ล็อคสมบัติของ Instance.Parent และเชื่อมต่อการเชื่อมต่อทั้งหมดและเรียก Destroy ที่ทุกลูก

  • เขียนพร้อมๆ กัน

    กลับสุนัขบรรพบุรุษต้นแบบแรกของ Instance ซึ่งมี Instance.Name เท่ากับชื่อที่ให้

  • เขียนพร้อมๆ กัน

    กลับสุดกำเนิดต้นแรกของ Instance ซึ่ง Object.ClassName เท่ากับชื่อของชนิดที่ให้

  • เขียนพร้อมๆ กัน

    กลับสุดกำเนิดต้นแรกของ Instance สำหรับผู้ที่ Object:IsA() กลับสำหรับชื่อของชนเผ่าที่กำหนดไว้

  • FindFirstChild(name : string,recursive : bool):Instance
    เขียนพร้อมๆ กัน

    กลับลูกคนแรกของ Instance ที่พบด้วยชื่อที่ให้

  • เขียนพร้อมๆ กัน

    กลับค่าเรียนแรกของ Instance ซึ่ง ClassName เท่ากับชื่อของชายคนแรกที่ให้

  • FindFirstChildWhichIsA(className : string,recursive : bool):Instance
    เขียนพร้อมๆ กัน

    กลับค่าเรียนแรกของ Instance สำหรับผู้ที่ Object:IsA() กลับค่าเรียนให้สำหรับชื่อของการให้นี้

  • เขียนพร้อมๆ กัน

    กลับค่าน้องต้นแรกที่พบด้วย Instance.Name

  • เขียนพร้อมๆ กัน

    กลับส่วน Actor ที่เกี่ยวข้องกับตัวอินสแตนซ์

  • GetAttribute(attribute : string):Variant
    เขียนพร้อมๆ กัน

    กลับค่าที่ได้รับการกำหนดไว้ให้แก่ชื่อค่าตัวละคร

  • กลับอีเวนต์ที่เกิดขึ้นเมื่อค่าตัวที่ให้ได้เปลี่ยนแปลง

  • เขียนพร้อมๆ กัน

    อินสแตนซ์

  • GetChildren():Instances
    เขียนพร้อมๆ กัน

    กลับรายการที่มีลูกหนองของตัวอินสแตนซ์ทั้งหมด

  • GetDebugId(scopeLength : number):string
    ไม่สามารถเรียกดู
    การรักษาความปลอดภัยของปลั๊กอิน

    กลับสตริงที่เข้ารหัสของไอดีของแดชบอร์ดที่ใช้ภายในโดย Roblox

  • เขียนพร้อมๆ กัน

    กลับรายการที่มีลูกหลานของตัวอย่างทั้งหมด

  • เขียนพร้อมๆ กัน

    อินสแตนซ์

  • GetStyled(name : string):Variant
  • เขียนพร้อมๆ กัน

    อินสแตนซ์

  • เขียนพร้อมๆ กัน

    ตรวจสอบว่ามีแท็กให้หรือไม่

  • IsAncestorOf(descendant : Instance):bool
    เขียนพร้อมๆ กัน

    กลับ true หาก Instance เป็นบรรพบุรุษของบรรพบุรุษที่ให้ไว้

  • เขียนพร้อมๆ กัน

    กลับ true หาก Instance เป็นลูกหลานของบรรพบุรุษที่ให้

  • RemoveTag(tag : string):void

    ลบแท็กออกจากอินสแตนซ์

  • SetAttribute(attribute : string,value : Variant):void

    ตั้งค่าค่าตัวละครที่ให้ไว้ให้กับค่าที่ให้ไว้

  • WaitForChild(childName : string,timeOut : number):Instance
    อาจให้

    กลับไปที่ลูกของ Instance ด้วยชื่อที่ให้ หากลูกไม่มีอยู่ มันจะสร้างกระทู้ปัจจุบันจนกว่ามันจะทำ

อีเวนต์

คุณสมบัติ

Archivable

อ่านพร้อมๆ กัน

สมบัตินี้กำหนดว่าต้องรวมตัวอินสแตนซ์เมื่อประสบการณ์ได้รับการเผยแพร่หรือบันทึกหรือเมื่อ Clone() ถูกเรี

การคัดลอกวัตถุใน Studio โดยใช้ตัวเลือก คัดลอก หรือ คัดลอก / วาง จะไม่สนใจคุณสมบัติของ 1> Class.Instance.Archivable|Archivable1> ของต


local part = Instance.new("Part")
print(part:Clone()) --> Part
part.Archivable = false
print(part:Clone()) --> nil

Capabilities

SecurityCapabilities
การรักษาความปลอดภัยของสคริปต์ Roblox
อ่านพร้อมๆ กัน

ชุดคุณสมบัติที่สามารถใช้สำหรับสคริปต์ภายในตัวอินสแตนนี้ สำหรับคุณสมบัติที่จะมีผลใช้งาน Instance.Sandboxed คุณสมบัติต้องเปิดใช้งานได้

สมบัตินี้ถูกใช้โดยคุณสมบัติทดลองใช้ ดูหน้า คุณสมบัติการสคริปต์ เพื่อขอรายละเอียดเพิ่มเติม

Name

อ่านพร้อมๆ กัน

รหัสประจำตัวผู้ไม่เฉพาะของ Instance

รายการนี้เป็นรหัสที่อธิบายวัตถุ ชื่อไม่จำเป็นต้องเป็นรหัสที่ไม่เหมือนกัน หลายบุตรของวัตถุอาจแชร์ชื่อเดียวกัน รายการชื่อใช้เพื่อให้ระดับห่วงโซ่ของวัตถุ พร้อมกับการสามาร

ชื่อของวัตถุมักใช้เพื่อเข้าถึงวัตถุผ่านห่างชั้นของแบบข้อมูลโดยใช้วิธีต่อไปนี้:


local baseplate = workspace.Baseplate
local 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 workspace
local part = Instance.new("Part")
part.Parent = workspace
-- Instance new can also take Parent as a second parameter
Instance.new("NumberValue", workspace)

เมื่อมีการเปลี่ยนแปลงบางอย่างในโครงสร้างของตัวอินสแตนซ์ใน DataModel เมื่อเป็นไปได้ เครื่องมืออาจต้องทำงานเพิ่มเติมภายใน (สำหรับสิ่งเช่นการเลีย

การเลียนแบบวัตถุ

วัตถุที่สร้างโดยเซิร์ฟเวอร์จะไม่เคลื่อนย้ายไปยังลูกค้าจนกว่าจะเป็นบรรพบุรุษกับวัตถุหนึ่งที่เคลื่อนย้ายไปยังมัน เมื่อสร้างวัตถุจากนั้นการตั้งค่าคุณสมบัติหลายอย่างจะ


local part = Instance.new("Part") -- หลีกเลี่ยงการใช้ตัวแปรที่สองที่นี่
part.Anchored = true
part.BrickColor = BrickColor.new("Really red")
-- อาจมีการเปลี่ยนแปลงทรัพย์สินอื่น ๆ อีกมากมายที่นี่...
-- ตั้งค่าพ่อของล่าสุดเสมอ!
part.Parent = workspace

อย่างไรก็ตามหากคุณเป็นพ่อของชิ้นส่วนของคุณไปยัง Model ที่ยังไม่ได้ตั้งผู้ปกครอง คุณสามารถปกครองแต่ละชิ้นส่วนได้โดยไม่เป็นไร เนื่องจากแม่แต่ละชิ้นส่วนยังไม่ได้เคยแทนที่

RobloxLocked

ซ่อนอยู่
การรักษาความปลอดภัยของปลั๊กอิน
อ่านพร้อมๆ กัน

สมบัตินี้ใช้เพื่อปกป้องวัตถุใน CoreGui บริการจากการเปลี่ยนแปลงโดยผู้ใช้ในวิธีที่ไม่ได้รับการอนุญาต มันถูกยกเลิกและไม่ทำอะไร

Sandboxed

ไม่ซ้ำ
การรักษาความปลอดภัยของสคริปต์ Roblox
อ่านพร้อมๆ กัน

เปลี่ยนให้ตัวอินสแตนซ์เป็นคอนเทนเนอร์แซนด์บ็อกซ์ คอนเทนเนอร์แซนด์บ็อกซ์เป็นคุณสมบัติที่มีการทดลองใช้ซึ่งจำกัดการดำเนินการที่สคริปต์ภายในคอนเทนเนอร์บางอย่างสามารถดำเนินการได้

ดูหน้า ความสามารถของสคริปต์ สำหรับรายละเอียดเพิ่มเติม

UniqueId

UniqueId
ไม่ซ้ำ
ไม่สามารถเขียนสคริปต์
การรักษาความปลอดภัยของ Roblox
อ่านพร้อมๆ กัน

วิธีการ

AddTag

void

วิธีนี้ใช้แท็กในตัวอินสแตนซ์โดยไม่มีผลหากแท็กถูกใช้แล้ว การเพิ่มแท็กจะเปิดสัญญาณที่สร้างโดย CollectionService:GetInstanceAddedSignal() ด้วยแท็กที่ให้ไว้

หมายเหตุว่าเมื่อแท็กอินสแน็ป มักจะมีทรัพยากรบางอย่างที่ใช้ในการให้คุณสมบัติของแท็ก เช่น ก

พารามิเตอร์

tag: string

ส่งค่ากลับ

void

ClearAllChildren

void

ฟังก์ชันนี้ทำลายเด็กของตัวอินสแตนซ์ทั้งหมด

ในฐานะ Instance:Destroy() เรียกตัวเองในลูกของวัตถุที่มันใช้, ฟังก์ชันนี้จะทำลายลูกหลานทั้งหมด

ทางเลือกอื่น ๆ สำหรับการล้างทั้งหมดของเด็ก

หากผู้พัฒนาไม่ต้องการทำลายล้างลูกหลานทั้งหมดพวกเขาควรใช้ Instance:GetChildren() หรือ Instance:GetDescendants() เพื่อสร้างผ่านวัตถุและเลือกสิ่งที่จะทำลาย ตัวอย่างโค้ดต่อไปนี


for _, instance in object:GetDescendants() do
if instance:IsA("BasePart") then
instance:Destroy()
end
end

ส่งค่ากลับ

void

ตัวอย่างโค้ด

Instance:ClearAllChildren

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

คลอน สร้างคันเลี้ยงของตัวอินสแตนซ์และลูกหลานทั้งหมดของมันโดยไม่สนใจ

หากตั้งค่าค่าอ้างอิงเช่น ObjectValue.Value ในตัวอินสแตนซ์ที่เคลียดโคลน ค่าของคุณสมบัติของคัดลอกจะขึ้นอยู่กับค่าของต้นฉบับ:

  • หากค่าอ้างอิงอ้างถึงตัวอย่างที่เป็น นอกจากนี้ยังมีการเคลื่อนย้ายอยู่ด้วย คัดลอกจะอ้างถึงคัดลอก
  • หากลังค้างไปยังตัวอ้างที่เป็นวัตถุที่ไม่ได้ ไม่ใช่ คลอนจากต้นฉบับ ค่าเดียวกันจะถูกเก็บไว้ในคัดลอก

ส่งค่ากลับ

ตัวอย่างโค้ด

Cloning an Instance

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

void

ตั้งค่าสมบัติของ 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 = nil
wait(2)
object.Parent = workspace

เพื่อทำลายวัตถุหลังจากระยะเวลาที่กำหนดไว้ใช้ Debris:AddItem()


ส่งค่ากลับ

void

ตัวอย่างโค้ด

Instance:Destroy()

local part = script.Parent.Part
part:Destroy()

FindFirstAncestor

เขียนพร้อมๆ กัน

กลับสุนัขบรรพบุรุษต้นแบบแรกของ Instance ซึ่งมี Instance.Name เท่ากับชื่อที่ให้

ฟังก์ชันนี้ทำงานขึ้นไป หมายถึงมันเริ่มที่ Instance.Parent อินสแตนซ์และทำงานขึ้นไปยัง DataModel หากไม่พบบรรพบุรุษที่ตรงกันใด ๆ จะกลับไปที่ nil

ตัวอย่างโค้ดต่อไปนี้จะพบบรรพบุรุษต้นแบบของวัตถุที่มีชื่อว่า "รถ"


local car = object:FindFirstAncestor("Car")

สำหรับตัวแปรของคุณสมบัตินี้ที่ค้นหาบรรพบุรุษของคลาสที่กำหนด โปรดดู Instance:FindFirstAncestorOfClass() และ Instance:FindFirstAncestorWhichIsA()

พารามิเตอร์

name: string

Class.Instance.Name ที่จะมองหา


ส่งค่ากลับ

FindFirstAncestorOfClass

เขียนพร้อมๆ กัน

กลับสุดกำเนิดต้นแรกของ Instance ซึ่ง Object.ClassName เท่ากับชื่อของชนิดที่ให้

ฟังก์ชันนี้ทำงานขึ้นไป หมายถึงมันเริ่มที่ Instance.Parent อินสแตนซ์และทำงานขึ้นไปยัง DataModel หากไม่พบบรรพบุรุษที่ตรงกันใด ๆ จะกลับไปที่ nil

การใช้งานทั่วไปของคุณสมบัตินี้คือการค้นหาว่า Model เป็นเจ้าของ BasePart


local model = part:FindFirstAncestorOfClass("Model")

คุณสมบัตินี้เป็นตัวแปรของ Instance:FindFirstAncestor() ซึ่งตรวจสอบสมบัติ Object.ClassName โดยไม่ใช่ Instance.Name นอกจากนี้ยังมี

พารามิเตอร์

className: string

Class.Object.className ที่จะมองหา


ส่งค่ากลับ

FindFirstAncestorWhichIsA

เขียนพร้อมๆ กัน

กลับสุดกำเนิดต้นแรกของ Instance สำหรับผู้ที่ Object:IsA() กลับสำหรับชื่อของชนเผ่าที่กำหนดไว้

ฟังก์ชันนี้ทำงานขึ้นไป หมายถึงมันเริ่มที่ Instance.Parent อินสแตนซ์และทำงานขึ้นไปยัง DataModel หากไม่พบบรรพบุรุษที่ตรงกันใด ๆ จะกลับไปที่ nil

ในขณะที่ Instance:FindFirstAncestorOfClass() ไม่ใช้ Object:IsA() ซึ่งเคารพการมีชีวิตรอดของคลาส โดยปกติ:


print(part:IsA("Part")) --> true
print(part:IsA("BasePart")) --> true
print(part:IsA("Instance")) --> true

ดังนั้นตัวอย่างรหัสต่อไปนี้จะกลับค่ากำเนิดต้นแรกของ BasePart โดยไม่เป็นไปตามว่ามันเป็น WedgePart หรือ MeshPart หรือ 2>Class.Part2>


local part = object:FindFirstAncestorWhichIsA("BasePart")

ดูเพิ่มเติม, Instance:FindFirstAncestor() .

พารามิเตอร์

className: string

Class.Object.className ที่จะมองหา


ส่งค่ากลับ

FindFirstChild

เขียนพร้อมๆ กัน

กลับลูกคนแรกของ Instance ด้วยชื่อที่กำหนด

หรือ nil หากไม่มีลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลูกลู

ตรวจสอบความถูกต้องของวัตถุ

ต้องการตรวจสอบว่ามีวัตถุหรือไม่ก่อนที่จะดำเนินการต่อ การพยายามที่จะดัดผมลูกชายโดยใช้ตัวดำเนินการดอทจะทำให้เกิดข้อผิดพลาดหากลูกชายไม่มีอยู่


-- ข้อผิดพลาดต่อไปนี้จะเกิดขึ้นหากไม่มี Part ใน Workspace:
workspace.Part.Transparency = 0.5

ใช้ FindFirstChild เพื่อตรวจสอบส่วนที่ต้องการก่อนแล้วใช้ if-句เพื่อดำเนินการโค้ดที่ต้องการ


local part = workspace:FindFirstChild("Part")
if part then
part.Transparency = 0.5
end

การค้นหาเด็กที่ชื่อตรงกับสมบัติสมบัติ

ในบางครั้ง 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 = part
local c = part.Color --> สี 3
local c2 = part:FindFirstChild("Color") --> The Folder

ประโยชน์หนึ่งในการใช้ FindFirstChild() รหัส

หมายเหตุประสิทธิภาพ

FindFirstChild() ใช้เวลาประมาณ 20% นานกว่าการใช้ดอ

พารามิเตอร์

name: string

Class.Instance.Name ที่จะค้นหา

recursive: bool

ว่าควรให้ค้นหาทำซ้ำหรือไม่

ค่าเริ่มต้น: false

ส่งค่ากลับ

ตัวอย่างโค้ด

Instance:FindFirstChild

local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end

FindFirstChildOfClass

เขียนพร้อมๆ กัน

กลับค่าเรียนแรกของ Instance ซึ่ง ClassName เท่ากับชื่อของชายคนแรกที่ให้

หากไม่พบเด็กที่ตรงกัน ฟังก์ชันนี้จะกลับมาเป็นศูนย์

ในขณะที่ Instance:FindFirstChildWhichIsA() ฟังก์ชันนี้ใช้เฉพาะวัตถุที่มีคลาสตรงกับชื่อเรียกของการให้มาเท่านั้น โดยไม่สนใจการมีคลาสมดอก

ผู้พัฒนาที่กำลังมองหาเด็กตามชื่อควรใช้ Instance:FindFirstChild() แทน

พารามิเตอร์

className: string

Class.Object.className ที่จะมองหา


ส่งค่ากลับ

ตัวอย่างโค้ด

Instance:FindFirstChildOfClass

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() แทน

พารามิเตอร์

className: string

Class.Object.className ที่จะค้นหา

recursive: bool

ว่าควรให้ค้นหาทำซ้ำหรือไม่

ค่าเริ่มต้น: false

ส่งค่ากลับ

FindFirstDescendant

เขียนพร้อมๆ กัน

กลับค่าน้องต้นแรกที่พบด้วย Instance.Name

อินสแตนซ์เพื่อค้นหาบุตรหลานคนแรกของตัวอย่างให้พิจารณาใช้ พารามิเตอร์ recursive บน Instance:FindFirstChild() แทน

พารามิเตอร์

name: string

Class.Instance.Name ที่จะค้นหา


ส่งค่ากลับ

GetActor

เขียนพร้อมๆ กัน

หาก Instance เป็น Class.Actor แล้ว Actor หากไม่มีบรรพบุรุษใด ๆ เป็น Class.Actor แล้วผลลัพธ์จะเป็น Actor


ส่งค่ากลับ

พบ Actor

GetAttribute

Variant
เขียนพร้อมๆ กัน

วิธีนี้กลับค่าที่ได้รับการกำหนดไว้ให้กับค่านามสกุลที่กำหนด หากไม่มีค่าที่ได้รับการกำหนดไว้ให้กับค่านามสกุลนั้น nil จะกลับมา

เช่นเดียวกับตัวอย่างโค้ดต่อไปนี้จะตั้งค่าและจากนั้นรับค่าของคอลัมน์ PositionInitial ของตัวอินสแตนซ์:


local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)

ดูเพิ่มเติม

  • Instance:SetAttribute() ซึ่งตั้งค่าคุณสมบัติด้วยชื่อที่ให้ไว้
  • Instance:GetAttributes() ซึ่งเป็นไดอารีของคู่มูลค่าสำหรับแต่ละค่าตัวของอินสแตนซ์

พารามิเตอร์

attribute: string

ชื่อของค่าตัวละครที่กำลังถูกดึง


ส่งค่ากลับ

Variant

มูลค่าที่ได้รับการกำหนดชื่อของค่าตัวละครที่กำหนด หากไม่มีค่าตัวละครใด ๆ ได้รับการกำหนด 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 ซึ่งจะเรียกใช้เมื่อมีการเปลี่ยนแปลงค่าตัวละครใด ๆ บนตัวอินสแตนซ์

พารามิเตอร์

attribute: string

ชื่อของค่าตัวละครที่กำหนดสำหรับการเปลี่ยนแปลงสัญญาณ


ส่งค่ากลับ

เหตุการณ์ที่เกิดขึ้นเมื่อค่าตัวที่ให้ไว้เปลี่ยนแปลง

GetAttributes

เขียนพร้อมๆ กัน

วิธีนี้กลับรายการคู่ค่าสำคัญสำหรับแต่ละลักษณะที่มีคีย์เป็นชื่อลักษณะและมีค่าเป็นค่าไม่ใช่ nil ค่า

เช่นในตัวอย่างรหัสต่อไปนี้จะสร้างค่าและคุณสมบัติของตัวอย่าง:


local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
part:SetAttribute("CanUse", true)
for name, value in part:GetAttributes() do
print(name .. " = " .. value)
end

ดูเพิ่มเติม Instance:GetAttribute() ซึ่งส่งคืนค่าที่ได้รับการกำหนดไว้ให้กับชื่อค่าที่กำหนด


ส่งค่ากลับ

พจนานุกรมของคำสากล → คู่ของตัวแปรสำหรับแต่ละลักษณะที่สตริงเป็นชื่อลักษณะและตัวแปรเป็นค่า non-nil

GetChildren

Instances
เขียนพร้อมๆ กัน

กลับรายการ (ตารางที่เรียบเรียงอย่างเลขาศาสตร์) ที่มีเด็กโดยตรงของตัวอินสแตนซ์ทั้งหมดหรือทุก ๆ Instance ที่มี Parent เท่ากับวัตถุ รายการสามารถเรียก


-- ตัวอย่างนิยมตัวเลข
local children = workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

-- ตัวอย่างฟอร์ลูปทั่วไป
local children = workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

เด็กถูกเรียงลำดับตามลำดับที่โปรไฟล์ Parent ของพวกเขาถูกตั้งไว้ในวัตถุ

ดูฟังก์ชัน GetDescendants เพิ่มเติม


ส่งค่ากลับ

Instances

รายการที่มีลูกของตัวอย่าง

ตัวอย่างโค้ด

Instance:GetChildren

local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end

GetDebugId

ไม่สามารถเรียกดู
การรักษาความปลอดภัยของปลั๊กอิน

กลับสตริงที่เข้ารหัสของไอดีของแดชบอร์ดที่ใช้ภายในโดย Roblox

หมายเหตุ:

  • รายการนี้ได้รับการป้องกัน การพยายามที่จะใช้มันใน Script หรือ LocalScript จะทำให้เกิดข้อผิดพลาด
  • รหัสดีบั๊กเป็นรหัสที่ใช้ในกระบวนการดีบั๊ก มันช่วยให้ผู้ดีบั๊กอ่านคำสั่งแต่ละรายการก่อนที่จะประมวลผลได้ โดยทั้งหมดของวัตถุใน Roblox ทำงานเหมือนกระบวนการและคำสั่งที่สามารถดีบั๊ก
  • นี่อาจเป็นประโยชน์สำหรับปลั๊กอินที่ต้องการแยกวัตถุที่คล้ายกันออกจากกัน (เช่น วัตถุที่แชร์ชื่อเดียวกัน)

พารามิเตอร์

scopeLength: number

ความยาวของสเก็ต

ค่าเริ่มต้น: 4

ส่งค่ากลับ

สตริง ID การดีบั๊ก

ตัวอย่างโค้ด

Instance:GetDebugId

print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12

GetDescendants

เขียนพร้อมๆ กัน

วิธีนี้สร้างรายการที่มีทุกของลูกของวัตถุนั้น ในขณะที่วิธี Instance:GetChildren() ไม่สร้างรายการที่มีเฉพาะลูกของวัตถุเท่านั้น วิธีนี้พบลูกของวัตถุทุกลูก ลูกของทุกเด็ก และเช่นนั้


ส่งค่ากลับ

รายการที่มีลูกหลานของตัวอย่าง

ตัวอย่างโค้ด

Instance:GetDescendants

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

คุณสมบัตินี้มีประโยชน์สำหรับการติดตามและการดีบั๊ก คุณไม่ควรพยายามที่จะประมวลผลสตริงที่กลับมาสำหรับการดำเนินการที่มีประโยชน์ใด ๆ คุณสมบัตินี้ไม่หลบหนีระยะเวลา (หรือสัญ


ส่งค่ากลับ

ชื่อเต็มของ Instance

ตัวอย่างโค้ด

Instance:GetFullName

-- 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
Instance:GetFullName Lua Implementation

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

GetStyled

Variant

พารามิเตอร์

name: string

ส่งค่ากลับ

Variant

GetTags

เขียนพร้อมๆ กัน

อินสแตนซ์คุณสามารถเพิ่มแท็กได้ทั้งใน Studio ในหน้า โปรไฟล์ หรือในระหว่างการประมวลผลด้วย AddTag()

วิธีนี้มีประโยชน์เมื่อคุณต้องการทำอะไรบางอย่างด้วยหลายแท็กในครั้งเดียว อย่างไรก็ตาม มันไม่สมเหตุสมผลที่จะใช้วิธีนี้เพื่อตรวจสอบว่ามีแท็กเดียวหรือไม่ แทนที่นั้นใช้


ส่งค่ากลับ

HasTag

เขียนพร้อมๆ กัน

วิธีนี้จะกลับมา true หากป้ายชื่อที่ให้ไว้ถูกเพิ่มในวัตถุ คุณสามารถเพิ่มป้ายชื่อได้ทั้งใน Studio ในหน้า โปรไฟล์ หรือในระหว่างการประมวลผลด้วย AddTag()

พารามิเตอร์

tag: string

ส่งค่ากลับ

IsAncestorOf

เขียนพร้อมๆ กัน

กลับ true หาก Instance เป็นบรรพบุรุษของบรรพบุรุษที่ให้ไว้

Class.Instance ถือเป็นบรรพบุรุษของวัตถุหาก Instance.Parent หรือหนึ่งในบรรพบุรุษของวัตถุ Instance.Parent ติดตั้งไว้ที่ 1>Class.Instance1>

ดูเพิ่มเติม, Instance:IsDescendantOf() .

พารามิเตอร์

descendant: Instance

ลูกหลาน Instance


ส่งค่ากลับ

จริงหาก Instance เป็นบรรพบุรุษของบรรพบุรุษที่ให้

ตัวอย่างโค้ด

Instance:IsAncestorOf()

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() .

พารามิเตอร์

ancestor: Instance

บรรพบุรุษ Instance


ส่งค่ากลับ

จริงหาก Instance เป็นลูกหลานของบรรพบุรุษที่ให้

ตัวอย่างโค้ด

Instance:IsDescendantOf

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

void

วิธีนี้จะลบแท็กออกจากอินสแตนซ์ มันจะไม่ส่งผลข้อผิดพลาดหากวัตถุไม่มีแท็ก การลบแท็กจะสร้างสัญญาณที่สร้างโดย CollectionService:GetInstanceRemovedSignal() ด้วยแท็กที่ให้

หมายเหตุว่าเมื่อแท็กอินสแนนส์จะมีความคุณว่าบางทรัพยากรจะใช้เพื่อให้ป้ายชื่อป้ายชื่อของมันโดยเฉพาะอย่างยิ่งการเชื่อมต่อกิจกรรมหรือตาราง เพื่อป้องกันการหลบหลีก

พารามิเตอร์

tag: string

ส่งค่ากลับ

void

SetAttribute

void

วิธีนี้ตั้งค่าค่าตัวละครที่มีชื่อให้กับค่าที่ให้ หากค่าที่ให้นั้นเป็น nil จะถูกลบออก เนื่องจาก nil ถูกนำกลับมาโดยค่าเริ่มต้น

ตัวอย่างโค้ดต่อไปนี้จะตั้งค่าค่า Position อินสแตนซ์Vector3.new(0, 10, 0) :


local part = workspace.Part
part:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))

ข้อจํากัด

ความต้องการและข้อจำกัดในการตั้งชื่อ:

  • ชื่อต้องใช้เฉพาะตัวอักษรที่เป็นตัวอักษรและขีดเส้นใต้เท่านั้น
  • ไม่อนุญาตพื้นที่หรือตัวอักษรที่ไม่เป็นปกติ
  • ต้องเป็นตัวอักษร 100 หรือน้อยกว่านั้น
  • ชื่อไม่สามารถเริ่มด้วย RBX ยกเว้นผู้โทรจะเป็นสคริปต์เครื่องหมายของ Roblox (สำหรับ Roblox)

พิมพ์จะมีข้อควรระวัง

ดูเพิ่มเติม:

  • Instance:GetAttribute() ซึ่งกลับค่าที่ได้รับการกำหนดไว้ให้กับชื่อค่าตัวละครที่กำหนด
  • Instance:GetAttributes() ซึ่งเป็นไดอารีของคู่มูลค่าสำหรับแต่ละค่าตัวของอินสแตนซ์

พารามิเตอร์

attribute: string

ตั้งค่า

value: Variant

มูลค่าที่กำหนดให้กับลักษณะที่กำหนด


ส่งค่ากลับ

void

WaitForChild

อาจให้

กลับค่าของลูกของ Instance ด้วยชื่อที่กำหนด หากลูกไม่มีอยู่ มันจะสร้างค่าปัจจุบันของธรรมชาติจนกว่ามันจะทำ หากประมาณ timeOut ตัวอักษรกำหนดไว้ วิธีนี้จะ

การใช้งานหลัก

WaitForChild() ผู้เล่น

โน้ต

  • ฟังก์ชันนี้ไม่สามารถให้ผลได้ถ้าเด็กที่มีชื่อที่ให้ไว้มีอยู่เมื่อโทรกเรียก
  • Instance:FindFirstChild() เป็นตัวเลือกที่มีประสิทธิภาพยิ่งขึ้นสำหรับ WaitForChild() สำหรับวัตถุที่คาดว่าจะมีอยู่
  • หากการโทรไปยังวิธีนี้เกิน 5 วินาทีโดยไม่ได้กลับมา และไม่มีตัวแปร timeOut ได้ระบุไว้ คำเตือนจะปริ้นที่ออกมาที่ผลลัพธ์ที่เว็บไซต์อาจนำเสนอในระยะยาว

พารามิเตอร์

childName: string

Class.Instance.Name ที่จะมองหา

timeOut: number

ตัวประกวดเวลาออก


ส่งค่ากลับ

ตัวอย่างโค้ด

Instance:WaitForChild

local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")

อีเวนต์

AncestryChanged

เกิดขึ้นเมื่อสมาชิก Instance.Parent ของวัตถุหรือหนึ่งในบรรพบุรุษของวัตถุถูกเปลี่ยนแปลง

เหตุการณ์นี้รวมถึงสองตัวอักษร, เด็ก และ พ่อ**เด็ก เรียกถึง 1> Class.Instance1> ที่มีอยู่จริง 4> พ่อ 4> เรียก

คุณสามารถใช้เหตุการณ์นี้เพื่อติดตามการลบของตัวอินสแตนซ์ใน Studio เช่นการลบแบบมือโปรใน Explorer หรือผ่านปลั๊กอิน หากคุณต้องการตรวจจับเมื่อตัวอินสแตนซ์ถูกทำลายโดย

พารามิเตอร์

child: Instance

Class.Instance ที่มี Instance.Parent เปลี่ยนแปลงแล้ว

parent: Instance

Class.Instance.Parent ใหม่ของ Class.Instance ซึ่ง Instance ของมันถูกเปลี่ยนแปลง


ตัวอย่างโค้ด

Instance.AncestryChanged

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() ซึ่งเป็นอีเวนต์ที่เกิดขึ้นเมื่อค่าตัวละครที่กำหนดเปลี่ยนแปลง

พารามิเตอร์

attribute: string

ชื่อของค่าตัวละครที่เปลี่ยนแปลง


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 .

พารามิเตอร์

child: Instance

Class.Instance ที่เพิ่มเข้ามาแล้ว


ตัวอย่างโค้ด

Instance.ChildAdded

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 .

พารามิเตอร์

child: Instance

Class.Instance ที่ถูกลบออก


ตัวอย่างโค้ด

Instance.ChildRemoved

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 .

พารามิเตอร์

descendant: Instance

Class.Instance ที่เพิ่มเข้ามาแล้ว


ตัวอย่างโค้ด

Instance.DescendantAdded

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 .

พารามิเตอร์

descendant: Instance

Class.Instance ที่กําลังจะถูกลบออก


ตัวอย่างโค้ด

Instance.DescendantRemoving

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 จะไม่ถูกทำลาย แทนที่, พ่อแม่ถูกตั้งไว้ที่ <


ตัวอย่างโค้ด

Using the Destroying Event (Immediate signals)

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()
Using the Destroying Event (Deferred signals)

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