Instance

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

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

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

Instance เป็นคลาสระดับฐานสำหรับคลาสทั้งหมดในลำดับชั้นคลาส Roblox ซึ่งสามารถเป็นส่วนหนึ่งของต้นไม้ DataModel

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

สรุป

คุณสมบัติ

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

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

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

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

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

    ตัวระบุไม่ซ้ำกันของ Instance ไม่

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

    กำหนดผู้ปกครองระดับชั้นของ Instance

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

    คุณสมบัติที่ถูกละเลยที่ใช้ป้องกันวัตถุ CoreGui

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

    เปลี่ยนให้ตัวอย่างเป็นคอนเทนเนอร์ที่ถูกกันกั้น

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

    ตัวระบุที่ไม่ซ้ำกันสำหรับตัวอย่าง

วิธีการ

  • AddTag(tag : string):()

    อินสแตนซ์กับตัวอย่าง

  • ฟังก์ชันนี้ทำลายล้างลูกๆ ของตัวอย่างทั้งหมด

  • สร้างสำเนาของตัวอย่างและลูกหลานทั้งหมดของมัน โดยไม่สนใจตัวอย่างที่ไม่ใช่ Archivable

  • Destroy():()

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

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

    คืนบรรพบุรุษคนแรกของ Instance ซึ่ง Instance.Name เท่ากับชื่อที่กำหนด

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

    คืนบรรพบุรุษคนแรกของ Instance ซึ่ง Object.ClassName เท่ากับ className ที่กำหนด

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

    คืนบรรพบุรุษคนแรกของ Instance สำหรับผู้ที่ Object:IsA() ส่งคืนความจริงสำหรับ className ที่กำหนด

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

    ส่งคืนบุตรคนแรกของ Instance ที่พบด้วยชื่อที่กำหนด

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

    คืนเด็กแรกของ Instance ซึ่ง ClassName เท่ากับชื่อคลาสที่กำหนด

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

    คืนเด็กแรกของ Instance สำหรับผู้ที่ Object:IsA() ส่งคืนความจริงสำหรับ className ที่กำหนด

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

    ส่งคืนลูกหลานคนแรกที่พบด้วย Instance.Name ที่กำหนด

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

    คืนค่า Actor ที่เกี่ยวข้องกับตัวอย่างหากมี

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

    คืนค่าที่ได้รับการกำหนดให้กับชื่อคุณสมบัติที่กำหนดไว้

  • ส่งกลับอีเวนต์ที่จะยิงเมื่อคุณสมบัติที่กำหนดเปลี่ยนแปลง

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

    คืนสารานุกรมของคุณสมบัติของตัวอย่าง

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

    คืนค่าเป็น array อินสแตนซ์

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

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

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

    ส่งคืนคอลเลกชันที่มีลูกหลานทั้งหมดของตัวอย่าง

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

    คืนสตริงที่อธิบายถึงบรรพบุรุษของตัวอย่าง

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

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

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

    ตรวจสอบว่าตัวอย่างมีแท็กที่กำหนดหรือไม่

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

    ส่งคืนจริงหาก Instance เป็นบรรพบุรุษของทายาทที่กำหนด

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

    ส่งคืน true หาก Instance เป็นลูกหลานของบรรพบุรุษที่กำหนด

  • ส่งคืน true หากมูลค่าที่เก็บไว้ในคุณสมบัติที่ระบุเป็นไม่เป็นค่าเริ่มต้น

  • RemoveTag(tag : string):()

    ลบแท็กออกจากตัวอย่าง

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

    ตั้งค่าคุณสมบัติด้วยชื่อที่กำหนดให้เป็นค่าที่กำหนดไว้

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

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

อีเวนต์

คุณสมบัติ

Archivable

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

คุณสมบัตินี้กำหนดว่าควรรวมตัวอย่างในเมื่อประสบการณ์ถูกเผยแพร่หรือบันทึก หรือเมื่อ Clone() ถูกเรียกใช้บนบรรพบุรุษของตัวอย่างหนึ่งการเรียก Clone() โดยตรงบนตัวอย่างจะส่งคืน nil หากตัวอย่างนั้นไม่ใช่ ไม่ใช่ Archivable

การคัดลอกวัตถุใน Studio โดยใช้ตัวเลือก ซ้ำ หรือ คัดลอก / วาง จะเพิกเฉยคุณสมบัติของตัวเอง Archivable และตั้ง Archivable เป็น true สำหรับการคัดลอก


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

Capabilities

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

อินสแตนซ์Instance.Sandboxed คุณสมบัติจะต้องเปิดใช้งาน

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

Name

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

ตัวระบุไม่ซ้ำกันของ Instance ไม่ชื่อใช้เพื่อให้โครงสร้างของวัตถุเป็นระเบียบ พร้อมกับอนุญาตให้สคริปต์เข้าถึงวัตถุเฉพาะชื่อของตัวอย่างไม่สามารถเกิน 100 ตัวอักษรในขนาดได้

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


local Workspace = game:GetService("Workspace")
local baseplate = Workspace.Baseplate
local baseplate = Workspace["Baseplate"]
local baseplate = Workspace:FindFirstChild("BasePlate")

เพื่อให้วัตถุสามารถเข้าถึงได้โดยใช้เครื่องหมายจุลภาค ( . ) ชื่อของมันต้องเริ่มด้วยเครื่องหมายขีดเส้นใต้หรือตัวอักษร และส่วนที่เหลือของชื่อสามารถมีเฉพาะตัวอักษร ตัวเลข หรือเครื่องหมายขีดเส้นใต้ (ไม่มีตัวอักษรพิเศษอื่น ๆ)หากชื่อของวัตถุไม่ปฏิบัติตามสังคณะนี้ จะไม่สามารถเข้าถึงได้โดยใช้ตัวเลข dot และ Luau จะไม่ตีความชื่อของมันเป็นตัวระบุ

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

ดูเพิ่มเติม Instance:GetFullName() เพื่อรับชื่อเต็มรวมถึงลำดับชั้นของวัตถุ

Parent

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

คุณสมบัติ Parent กำหนดผู้ปกครองระดับสูงของ Instanceคำศัพท์ต่อไปนี้มักใช้เมื่อพูดถึงวิธีการตั้งค่าคุณสมบัตินี้:

  • วัตถุเป็นลูก ของ หรือเป็น พ่อแม่ ของวัตถุอื่นเมื่อ Parent ของมันถูกตั้งค่าเป็นวัตถุนั้น

  • บุตรหลานของ **** ของ an Instance คือบุตรหลานของวัตถุนั้น, บวกกับบุตรหลานของบุตรหลานด้วย

  • บรรพบุรุษ ของ ของตัวอย่างทั้งหมดคือวัตถุทั้งหมดที่ตัวอย่างเป็นลูกหลาน

มาจากคุณสมบัติ Parent ที่สมาชิก API อื่นๆ หลายคนได้รับชื่อของพวกเขา, เช่น GetChildren() และ FindFirstChild()คุณสมบัตินี้ยังใช้เพื่อจัดการว่าวัตถุมีอยู่ในประสบการณ์หรือจำเป็นต้องลบออกตราบใดที่พ่อของวัตถุอยู่ใน DataModel จะถูกเก็บไว้ในตัวแปรหรือได้รับการอ้างอิงโดยคุณสมบัติของวัตถุอื่นก็จะยังคงอยู่ในประสบการณ์; มิฉะนั้นวัตถุจะถูกลบออกโดยอัตโนมัติ

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

วัตถุที่สร้างใหม่โดยใช้ Instance.new() จะไม่มีพ่อแม่ และมักจะไม่ปรากฏหรือทำงานจนกว่าจะตั้งค่าแล้ว

การสําเนาวัตถุ

วัตถุที่สร้างโดยเซิร์ฟเวอร์จะไม่ถูกสร้างซ้ำให้กับลูกค้าจนกว่าจะถูกผูกกับวัตถุที่ถูกสร้างซ้ำเมื่อสร้างวัตถุและกำหนดค่าสมบัติจำนวนมาก แนะนำให้ตั้งค่าคุณสมบัติ Parent ล่าสุด **** ซึ่งช่วยให้วัตถุสามารถสําเนาได้เพียงครั้งเดียว แทนที่จะสําเนาการเปลี่ยนแปลงคุณสมบัติจํานวนมาก


local Workspace = game:GetService("Workspace")
-- อินสแตนซ์(แนะนำ)
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = Workspace

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

RobloxLocked

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

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

Sandboxed

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

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

UniqueId

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

อินสแตนซ์Instance.Name ซึ่งไม่จำเป็นต้องเป็นเอกลักษณ์เสมอไป

วิธีการ

AddTag

()

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

คําเตือน
  • แท็กของตัวอย่างที่ถูกเพิ่มบนเครื่องคอมพิวเตอร์จะถูกลบหากเซิร์ฟเวอร์เพิ่มหรือลบแท็กบนตัวอย่างนั้นในภายหลังเพราะเซิร์ฟเวอร์สำเนาทั้งหมดแท็กและเขียนทับแท็กก่อนหน้า

  • อินสแตนซ์มันเป็นเรื่องธรรมดาที่ทรัพยากรบางอย่างจะถูกใช้เพื่อให้ป้ายกำกับมีฟังก์ชัน เช่น การเชื่อมต่อกิจกรรมหรือตารางเพื่อป้องกันการรั่วไหลของหน่วยความจํา เป็นความคิดที่ดีที่จะทําความสะอาดพวกเขา (ตัดการเชื่อมต่อ, ตั้งค่าเป็น nil เป็นต้น) เมื่อไม่จําเป็นต้องใช้แท็กอีกต่อไปทำเช่นนี้เมื่อเรียก Instance:RemoveTag() , เรียก Instance:Destroy() หรือในฟังก์ชันที่เชื่อมต่อกับสัญญาณที่ส่งคืนโดย CollectionService:GetInstanceRemovedSignal()

พารามิเตอร์

tag: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ClearAllChildren

()

ฟังก์ชันนี้ทำลายล้างบุตรและหลานของตัวอย่างทั้งหมด

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


local Workspace = game:GetService("Workspace")
local model = Workspace:FindFirstChild("TestModel")
for _, descendant in model:GetDescendants() do
if descendant:IsA("BasePart") then
descendant:Destroy()
end
end

ส่งค่ากลับ

()

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

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

Clone() สร้างสำเนาของตัวอย่างและลูกหลานทั้งหมดของมัน โดยไม่สนใจตัวอย่างทั้งหมดที่ไม่ใช่ Archivableสำเนาของตัวอย่างรากถูกส่งคืนโดยวิธีนี้และ Parent ของมันถูกตั้งค่าเป็น nilโปรดทราบว่าหากตัวอย่างเองมี Archivable ตั้งค่าเป็น false ฟังก์ชันนี้จะส่งคืน nil

หากคุณสมบัติอ้างอิงเช่น 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

()

ตั้งค่าคุณสมบัติ Instance.Parent เป็น nil ล็อคคุณสมบัติ Instance.Parent ปิดการเชื่อมต่อทั้งหมด และเรียก Destroy() ในทุกเด็กฟังก์ชันนี้เป็นวิธีที่ถูกต้องในการทิ้งวัตถุที่ไม่จำเป็นอีกต่อไป

การทิ้งวัตถุที่ไม่จำเป็นเป็นสิ่งสำคัญ เนื่องจากวัตถุและการเชื่อมต่อที่ไม่จำเป็นในสถานที่ใช้หน่วยความจำที่สามารถนำไปสู่ปัญหาประสิทธิภาพที่ร้ายแรงในระยะเวลานาน

ในฐานะที่เป็นการปฏิบัติที่ดีที่สุดหลังจากเรียก Destroy() บนวัตถุ ให้ตั้งแปรใดๆ ที่อ้างอิงถึงวัตถุ (หรือบรรดาลูกหลานของมัน) เป็น nilสิ่งนี้ป้องกันไม่ให้โค้ดของคุณเข้าถึงสิ่งที่เกี่ยวข้องกับวัตถุ


local part = Instance.new("Part")
part.Name = "Hello, world"
part:Destroy()
-- อย่าทําสิ่งนี้:
print(part.Name) --> "สวัสดีโลก"
-- ทำเช่นนี้เพื่อป้องกันไม่ให้บรรทัดด้านบนทำงาน:
part = nil

เมื่อ Instance ถูกทําลายโดยวิธีนี้แล้ว จะไม่สามารถใช้ซ้ำได้เพราะคุณสมบัติ Instance.Parent ถูกล็อคเพื่อ ชั่วคราว ลบวัตถุแทนที่จะทำลายมัน, ตั้ง Parent เป็น nilตัวอย่าง:


local Workspace = game:GetService("Workspace")
object.Parent = nil
task.wait(2)
object.Parent = Workspace

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


ส่งค่ากลับ

()

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

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

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


local car = object:FindFirstAncestor("Car")

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

พารามิเตอร์

name: string

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

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

ส่งค่ากลับ

พบ Instance ที่

FindFirstAncestorOfClass

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

คืนบรรพบุรุษคนแรกของ Instance ซึ่ง Object.ClassName เท่ากับ className ที่กำหนด

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

การใช้งานทั่วไปของฟังก์ชันนี้คือการค้นหา Model ที่เป็นของ BasePart ตัวอย่างเช่น:


local model = part:FindFirstAncestorOfClass("Model")

ฟังก์ชันนี้เป็นตัวแปรของ Instance:FindFirstAncestor() ซึ่งตรวจสอบคุณสมบัติ Object.ClassName แทนที่จะเป็น Class.Instance.Name``Class.Instance:FindFirstAncestorWhichIsA() ยังมีอยู่เช่นกันโดยใช้วิธีการ Object:IsA() แทนที่จะเคารพการสืบทอดคลาส

พารามิเตอร์

className: string

The Object.ClassName ที่จะมองหา

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

ส่งค่ากลับ

พบ Instance ที่

FindFirstAncestorWhichIsA

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

คืนบรรพบุรุษคนแรกของ Instance สำหรับผู้ที่ Object:IsA() ส่งคืนความจริงสำหรับ className ที่กำหนด

ฟังก์ชันนี้ทำงานขึ้นไป อินสแตนซ์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 หรือ Part ก็ตาม


local part = object:FindFirstAncestorWhichIsA("BasePart")

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

พารามิเตอร์

className: string

The Object.ClassName ที่จะมองหา

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

ส่งค่ากลับ

พบ Instance ที่

FindFirstChild

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

ส่งคืนบุตรคนแรกของ Instance ด้วยชื่อที่กำหนด หรือ nil หากไม่มีบุตรดังกล่าวหากอาร์กิวเมนต์ตัวเลือก recursive ไม่บังคับเป็น true ฟังก์ชันนี้จะค้นหาลูกหลานทั้งหมดแทนที่จะเป็นเฉพาะบุตรชายที่ใกล้เคียงของ Instance

ตรวจสอบการมีอยู่ของวัตถุ

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


local Workspace = game:GetService("Workspace")
-- ข้อผิดพลาดในบรรทัดต่อไปหากส่วนไม่มีอยู่ในพื้นที่ทำงาน
Workspace.Part.Transparency = 0.5

ใช้ FindFirstChild() เพื่อตรวจสอบก่อน Part จากนั้นใช้คำสั่ง if เพื่อรันโค้ดที่ต้องการ


local Workspace = game:GetService("Workspace")
local part = Workspace:FindFirstChild("Part")
if part then
part.Transparency = 0.5
end
ค้นหาเด็กที่ชื่อตรงกับคุณสมบัติ

บางครั้ง Name ของวัตถุเป็นเหมือนกับของคุณสมบัติของมัน Parentเมื่อใช้ตัวประกอบจุด, คุณสมบัติจะมีลําดับความสําคัญมากกว่าเด็กถ้าพวกเขาแชร์ชื่อ

ในตัวอย่างต่อไปนี้ Folder ที่เรียกว่า "สี" จะถูกเพิ่มลงใน Part ซึ่งยังมีคุณสมบัติ Class.Part.Color``Class.Part.Color หมายถึง Color3 ไม่ใช่โฟลเดอร์


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% นานกว่าการใช้ตัวประกอบจุลภาคและเกือบ 8 เท่านานกว่าการเก็บอ้างอิงถึงวัตถุโดยตรงดังนั้นคุณควรหลีกเลี่ยงการเรียกใช้ในรหัสที่ขึ้นอยู่กับประสิทธิภาพเช่นในลูปแคบหรือฟังก์ชันที่เชื่อมโยงกับ RunService.Heartbeat และ RunService.PreRenderแทนที่จะเก็บผลลัพธ์ในตัวแปรหรือพิจารณาการใช้ ChildAdded หรือ WaitForChild() เพื่อตรวจสอบเมื่อบุตรของชื่อที่กำหนดเป็นที่มีอยู่

พารามิเตอร์

name: string

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

ค่าเริ่มต้น: ""
recursive: boolean

ว่าการค้นหาควรจะดำเนินการอย่างไร้ที่ติดตามหรือไม่

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

ส่งค่ากลับ

พบ Instance ที่

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

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 เท่ากับที่กำหนด classNameไม่เหมือนกับ Instance:FindFirstChildWhichIsA() ฟังก์ชันนี้จะคืนวัตถุที่มีคลาสตรงกับ className โดยไม่สนใจการสืบทอดคลาสหากไม่พบเด็กที่ตรงกัน ฟังก์ชันนี้จะคืน nil

พารามิเตอร์

className: string

The Object.ClassName ที่จะมองหา

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

ส่งค่ากลับ

พบ Instance ที่

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

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() ส่งคืนความจริงสำหรับ className ที่กำหนด

หากไม่พบเด็กที่ตรงกัน ฟังก์ชันนี้จะคืน nilหากอาร์กิวเมนต์ทางเลือกที่เป็นทฤษฎีเป็นจริง, ฟังก์ชันนี้จะค้นหาลูกหลานทั้งหมดแทนที่จะเป็นเพียงบุตรหลานโดยตรงของ Instance

ไม่เหมือนกับ Instance:FindFirstChildOfClass() ฟังก์ชันนี้ใช้ Object:IsA() ซึ่งเคารพการสืบทอดคลาส ตัวอย่างเช่น:


print(part:IsA("Part")) --> จริง
print(part:IsA("BasePart")) --> จริง
print(part:IsA("Instance")) --> true

ดังนั้นตัวอย่างโค้ดต่อไปนี้จะคืนเด็กแรก BasePart ไม่ว่าจะเป็น WedgePart หรือ MeshPart หรือ Part ก็ตาม


local part = object:FindFirstChildWhichIsA("BasePart")

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

พารามิเตอร์

className: string

The Object.ClassName ที่จะค้นหา

ค่าเริ่มต้น: ""
recursive: boolean

ว่าการค้นหาควรจะดำเนินการอย่างไร้ที่ติดตามหรือไม่

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

ส่งค่ากลับ

พบ Instance ที่

FindFirstDescendant

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

ส่งคืนลูกหลานคนแรกที่พบด้วย Instance.Name ที่กำหนด

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

พารามิเตอร์

name: string

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

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

ส่งค่ากลับ

พบ Instance ที่

GetActor

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

หาก Instance เป็น Actor ก็จะส่งคืน Actor เองมิฉะนั้นจะส่งคืนบรรพบุรุษที่ใกล้ที่สุด Actorหากไม่มีบรรพบุรุษเป็น Actor ผลลัพธ์คือ nil


ส่งค่ากลับ

พบ Actor ที่

GetAttribute

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

วิธีนี้จะคืนค่าที่ได้รับการกำหนดให้กับชื่อคุณสมบัติที่กำหนด หากไม่มีคุณสมบัติถูกกำหนด จะถูกคืน nil

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


local Workspace = game:GetService("Workspace")
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 ยกเว้นว่ามันจะยิงเฉพาะเมื่อมีการเปลี่ยนแปลงคุณสมบัติที่กำหนดเอง; มีประสิทธิภาพคล้ายกับ GetPropertyChangedSignal() แต่สำหรับคุณสมบัติ

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

ตัวอย่างโค้ดต่อไปนี้จะส่งสัญญาณที่เปิดใช้งานฟังก์ชัน attributeChanged() เมื่อคุณสมบัติส่วน InitialPosition เปลี่ยนแปลง:


local Workspace = game:GetService("Workspace")
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 Workspace = game:GetService("Workspace")
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() ซึ่งจะคืนค่าที่ได้รับการกำหนดให้กับชื่อคุณสมบัติที่กำหนดไว้


ส่งค่ากลับ

สารานุกรมของคู่สตริง → คู่สำหรับแต่ละคุณสมบัติที่สตริงเป็นชื่อของคุณสมบัติและตัวแปรเป็นค่าที่ไม่เป็นศูนย์

GetChildren

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

ส่งคืนคอลเลกชัน (อินสแตนซ์) ที่มีลูกโดยตรงของตัวอย่างทั้งหมดหรือทุก Instance ที่มี Parent เท่ากับวัตถุสามารถตรวจสอบอาร์เรย์ได้โดยใช้ลูป for ที่เป็นตัวเลขหรือทั่วไป:


local Workspace = game:GetService("Workspace")
-- ตัวอย่างลูปเลขหนึ่ง
local children = Workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

local Workspace = game:GetService("Workspace")
-- ตัวอย่างลูปทั่วไป
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

ส่งค่ากลับ

สตริงไอดีการดีบัก

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

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 ของวัตถุและบรรพบุรุษของมัน แยกกับจุลภาคThe DataModel ( game ) ไม่ได้รับการพิจารณาตัวอย่างเช่น Part ใน Workspace อาจส่งคืน Workspace.Part

เมื่อเรียกใช้บน Instance ที่ไม่ใช่ลูกหลานของ DataModel ฟังก์ชันนี้พิจารณาบรรพบุรุษทั้งหมดจนถึงและรวมถึงบรรพบุรุษสูงสุดโดยไม่มี Parent

ฟังก์ชันนี้มีประโยชน์สำหรับการบันทึกและการแก้ไขข้อผิดพลาดคุณไม่ควรพยายามแยกสตริงที่ส่งคืนสําหรับการดําเนินการที่มีประโยชน์ใดๆ; ฟังก์ชันนี้ไม่หลบหนีช่วงเวลา (หรือสัญลักษณ์อื่นๆ) ในชื่อวัตถุคือ แม้ว่าออกจะปรากฏเป็นตัวระบุ Luau ที่ถูกต้องบ่อยครั้ง แต่ก็ไม่ได้รับประกัน


ส่งค่ากลับ

ชื่อเต็มของ 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

GetStyledPropertyChangedSignal

พารามิเตอร์

property: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetTags

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

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

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


ส่งค่ากลับ

HasTag

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

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

พารามิเตอร์

tag: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

IsAncestorOf

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

ส่งคืนจริงหาก Instance เป็นบรรพบุรุษของทายาทที่กำหนด

An Instance ถือเป็นบรรพบุรุษของวัตถุหากวัตถุมี Instance.Parent หรือหนึ่งในพ่อแม่ของมันมี Instance.Parent ถูกตั้งค่าเป็น Instance

ดูเพิ่มเติม, 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 เป็นลูกหลานของบรรพบุรุษที่กำหนด

โปรดทราบว่า 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

IsPropertyModified

ส่งคืน true หากมูลค่าที่เก็บไว้ในคุณสมบัติที่ระบุเป็นไม่ได้เป็นค่าเริ่มต้นตัวอย่างเช่น หากการส่งออกคุณสมบัติ Rotation ของ TextLabel ชี้ไปที่ 0 แล้วเรียก IsPropertyModified("Rotation") บนฉลากจะส่งคืน false เพราะ 0 เป็นค่าเริ่มต้นสำหรับ TextLabel.Rotation

พารามิเตอร์

property: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

บูลีนบ่งบอกว่าคุณสมบัติถูกแก้ไขหรือไม่

RemoveTag

()

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

โปรดทราบว่าเมื่อทำการแท็กตัวอย่าง มันเป็นเรื่องธรรมดาที่ทรัพยากรบางอย่างจะถูกใช้เพื่อให้แท็กมีฟังก์ชัน เช่น การเชื่อมต่อกิจกรรมหรือตารางเพื่อป้องกันการรั่วไหลของหน่วยความจํา เป็นความคิดที่ดีที่จะทําความสะอาดพวกเขา (ตัดการเชื่อมต่อ, ตั้งค่าเป็น nil เป็นต้น) เมื่อไม่จําเป็นต้องใช้แท็กอีกต่อไป

พารามิเตอร์

tag: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ResetPropertyToDefault

()

รีเซ็ตคุณสมบัติเป็นค่าเริ่มต้นตัวอย่างเช่น การโทร ResetPropertyToDefault("Rotation") บน TextLabel เทียบเท่ากับการตั้งค่า Rotation ของมันเป็น 0 (ค่าเริ่มต้นของคุณสมบัติ)

พารามิเตอร์

property: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetAttribute

()

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

ตัวอย่างเช่น ชิ้นส่วนโค้ดต่อไปนี้ตั้งค่าคุณสมบัติ InitialPosition ของตัวแปรของอินสแตนซ์เป็น Vector3.new(0, 10, 0) :


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
ข้อจํากัด

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

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

พิมพ์จะมีการโยนข้อผิดพลาด

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

พารามิเตอร์

attribute: string

ชื่อของคุณสมบัติที่กําลังตั้งค่า

ค่าเริ่มต้น: ""
value: Variant

มูลค่าที่จะตั้งค่าคุณสมบัติที่กำหนดไว้

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

ส่งค่ากลับ

()

WaitForChild

อาจให้

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

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

WaitForChild() มีความสำคัญอย่างยิ่งเมื่อทำงานกับโค้ดที่รันโดยไคลเอนต์ใน LocalScriptเครื่องยนต์ Roblox ไม่รับประกันเวลาหรือลำดับที่วัตถุถูกสําเนาจากเซิร์ฟเวอร์ไปยังไคลเอนต์นอกจากนี้หากประสบการณ์มี Workspace.StreamingEnabled ตั้งค่าเป็นจริง BaseParts ที่อยู่ไกลจากตัวละครของผู้เล่นอาจไม่ถูกสตรีมไปยังไคลเอนต์ อาจทำให้สคริปต์พังเมื่อสแกนวัตถุที่ยังไม่มีอยู่ในไคลเอนต์

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

พารามิเตอร์

childName: string

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

ค่าเริ่มต้น: ""
timeOut: number

พารามิเตอร์เวลาหมดอายุที่เลือกได้

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

ส่งค่ากลับ

พบ Instance ที่

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

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 ของวัตถุหรือหนึ่งในบรรพบุรุษเปลี่ยนแปลง

อีเวนต์นี้รวมถึงพารามิเตอร์สองตัว: child หมายถึง Instance ซึ่ง Instance.Parent ถูกเปลี่ยนแปลงจริงๆ ในขณะที่ parent หมายถึง Instance.Parent อินสแตนซ์

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

พารามิเตอร์

child: Instance

The Instance ที่มี Instance.Parent ถูกเปลี่ยนแปลง

parent: Instance

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


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

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 Workspace = game:GetService("Workspace")
local part = Workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)

ดูเพิ่มเติม Instance:GetAttributeChangedSignal() ซึ่งจะส่งกลับเหตุการณ์ที่จะยิงเมื่อคุณลักษณะที่กำหนดเฉพาะเปลี่ยนแปลง

พารามิเตอร์

attribute: string

ชื่อของคุณสมบัติที่ถูกเปลี่ยนแปลง


ChildAdded

ไฟไหม้หลังจากที่วัตถุถูกผูกกับสิ่งนี้ Instance

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


local Workspace = game:GetService("Workspace")
Workspace.ChildAdded:Connect(function(child)
-- Use WaitForChild() since descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)

โปรดทราบว่าฟังก์ชันนี้ทำงานได้เฉพาะสําหรับบุตรหลานที่ใกล้ที่สุดของ Instance สําหรับฟังก์ชันที่จับภาพลูกหลานทั้งหมดใช้ Instance.DescendantAdded

ดูเพิ่มเติม Instance.ChildRemoved .

พารามิเตอร์

child: Instance

The 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:Destroy() ) เนื่องจากฟังก์ชันการทําลายตั้งค่าผู้ปกครองของวัตถุเป็น nil

ฟังก์ชันนี้ทำงานได้เฉพาะสําหรับเด็กที่ใกล้ที่สุดของ Instance สําหรับฟังก์ชันที่จับภาพลูกหลานทั้งหมดใช้ Instance.DescendantRemoving

ดูเพิ่มเติม Instance.ChildAdded .

พารามิเตอร์

child: Instance

The 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

อีเวนต์นี้จะเกิดขึ้นหลังจากที่มีการเพิ่มลูกหลานลงใน Instance

เมื่อยิงสำหรับทุกบุตรหลาน, การเลี้ยงดูวัตถุไปยัง Instance จะยิงเหตุการณ์สำหรับวัตถุนี้และบุตรหลานทั้งหมดเป็นรายบุคคล

หากคุณกังวลเฉพาะกับเด็กโดยตรง ของ ของ Instance ให้ใช้ Instance.ChildAdded แทน

ดูเพิ่มเติม Instance.DescendantRemoving .

พารามิเตอร์

descendant: Instance

The 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 จะมีการเปลี่ยนแปลงที่ทำให้ตัวละคร ลูกหลาน ไม่ใช่ลูกหลานแล้วDestroy() เปลี่ยน Parent อินสแตนซ์nil ดังนั้นการเรียกวิธีนั้นบนลูกหลานของพ่อจะทำให้เกิดเหตุการณ์นี้

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

หากมีลูกหลานมีลูก อีเวนต์นี้จะยิงกับลูกหลานก่อน ตามด้วยลูกหลานของมัน

คำเตือน

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


local Workspace = game:GetService("Workspace")
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

The 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

The Instance จะไม่ถูกลบออกจากหน่วยความจําในขณะที่ฟังก์ชันที่เชื่อมต่อยังคงใช้งานอยู่อย่างไรก็ตาม หากฟังก์ชันให้ผลที่จุดใดก็ตาม Instance และบรรดาลูกหลานของมันจะถูกถ่ายโอนไปยัง nil

หากคุณสมบัติ Workspace.SignalBehavior ถูกตั้งค่าเป็น Enum.SignalBehavior.Immediate อีเวนต์นี้จะเกิดขึ้นทันทีก่อนที่ Instance หรือหนึ่งในบรรพบุรุษจะถูกทําลายด้วย Instance:Destroy()

หากคุณสมบัติ Workspace.SignalBehavior ถูกตั้งค่าเป็น Enum.SignalBehavior.Deferred อีเวนต์นี้จะเกิดขึ้นที่จุดระงับการดำเนินการต่อไป ซึ่งจะเป็นหลังจากที่ Instance หรือหนึ่งในบรรพบุรุษจะถูกทําลายด้วย Instance:Destroy()

ด้วยพฤติกรรม Deferred การเชื่อมต่อสคริปต์กับอีเวนต์ของตัวเอง Instance.Destroying เป็นปัญหาเนื่องจากสคริปต์จะถูกทําลายก่อนที่จะสามารถเรียกคืนได้ (หมายความว่ามันจะไม่ถูกดําเนินการ)

เมื่อลบ Instance ใน Studio เช่นการลบด้วยตนเองผ่าน Explorer หรือผ่านปลั๊กอินก็ไม่ทำลาย Instanceแทนที่จะตั้งค่าพ่อเป็น nil ซึ่งคุณสามารถติดตามได้ด้วย Instance.AncestryChanged


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

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

StyledPropertiesChanged