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

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

This example creates a Part and adds a few sparkle objects to the part. Then it calls Part:ClearAllChildren() to remove all of the children.

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 ในตัวอินสแตนซ์ที่เคลียดโคลน ค่าของคุณสมบัติของคัดลอกจะขึ้นอยู่กับค่าของต้นฉบับ:

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

ส่งค่ากลับ

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

Demonstrates cloning a model using Instance:Clone().

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

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

Demonstrates destroying a Part using the Instance:Destroy() function.

This function is the correct way to dispose of objects that are no longer required.

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

ส่งค่ากลับ

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

The below would look in Workspace for an object name "Brick". If found, it will change the name of the object to "Foo".

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

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

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

The below would print the name of all objects currently in Workspace when ran.

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() ไม่สร้างรายการที่มีเฉพาะลูกของวัตถุเท่านั้น วิธีนี้พบลูกของวัตถุทุกลูก ลูกของทุกเด็ก และเช่นนั้


ส่งค่ากลับ

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

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

GetDescendants is often used to do something to all the descendants that are a particular type of object. The code in this example uses GetDescendants and Instance:IsA() to find all of the parts in the workspace and turns them green.

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

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

This code sample demonstrates the behavior of Instance:GetFullName(). It shows how the function behaves when called on an object not in the DataModel hierarchy, and it also shows how the return value does not escape special characters.

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

This code sample re-implements the Instance:GetFullName() function in Lua.

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 เป็นบรรพบุรุษของบรรพบุรุษที่ให้

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

Demonstrates determining if one instance is the ancestor of another using Instance:IsAncestorOf()

Workspace and SpawnLocation are ancestors of the SpawnLocation's decal. Workspace is an ancestor of SpawnLocation.

SpawnLocation and its decal are descendants of Workspace, not ancenstors. Decal is a descendant to SpawnLocation, not an ancestor.

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

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


ส่งค่ากลับ

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

The following code waits for an instance named "Part" to be added to Workspace.

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 ของมันถูกเปลี่ยนแปลง


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

Demonstrates detecting changes to an instance's ancestry by connecting to the Instance.AncestryChanged event.

The ChangingPart's Parent is set to different values overtime. The parent of the part is the part's ancestor, so the Instance.AncestryChanged event will fire whenever it changes.

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 ที่เพิ่มเข้ามาแล้ว


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

This snippet prints the names of objects as they are added to the Workspace:

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 ที่ถูกลบออก


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

This snippet prints the names of objects as they are removed from the Workspace:

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 ที่เพิ่มเข้ามาแล้ว


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

This following example will print the name of any object that is added to the Workspace:

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 ที่กําลังจะถูกลบออก


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

The following example prints the name of any descendant as it is being removed from the Workspace:

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


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

This sample demonstrates how, when using Immediate signal behavior, an Instance being destroyed remains in place until the connected function yields.

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

This sample demonstrates how, when using Deferred signal behavior, an Instance is destroyed before the signal fires.

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