Instance

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo
Không Thể Duyệt

Instance là lớp cơ sở cho tất cả các lớp trong cấu trúc lớp Roblox có thể là phần của cây DataModel .

Không thể tạo trực tiếp đối tượng gốc Instance , nhưng công cụ xây dựng đặc biệt Instance.new() tạo đối tượng thông qua mã, lấy tên của lớp là tham số và trả lại đối tượng được tạo.

Tóm Tắt

Thuộc Tính

  • Đọc Song Song

    Xác định xem một Instance và con cháu của nó có thể được nhân bản bằng cách sử dụng Instance:Clone() và có thể được lưu/xuất bản.

  • Capabilities:SecurityCapabilities
    Đọc Song Song

    Bộ năng lực được phép sử dụng cho các kịch bản bên trong thùng chứa này.

  • Đọc Song Song

    Một nhận dạng không duy nhất của Instance .

  • Không Sao Chép
    Đọc Song Song

    Xác định cha cấp bậc của Instance .

  • Ẩn
    Bảo Mật Plugin
    Đọc Song Song
    Đã Lỗi Thời

    Một tính năng lỗi thời đã từng được sử dụng để bảo vệ CoreGui các đối tượng.

  • Không Sao Chép
    Đọc Song Song

    Biến instance thành một thùng chứa cát.

  • UniqueId:UniqueId
    Không Sao Chép
    Không Thể Viết Kịch Bản
    Bảo Mật Roblox
    Đọc Song Song

    Một nhận dạng duy nhất cho ví dụ / trường hợp.

Phương Pháp

Sự Kiện

Thuộc Tính

Archivable

Đọc Song Song

Tính chất này xác định xem liệu instance có nên được bao gồm khi kinh nghiệm được xuất bản hoặc lưu hoặc khi Clone() được gọi trên một trong những tổ tiên của ví dụ / trường hợp.Gọi trực tiếp trên một ví dụ sẽ trả về nếu ví dụ đó không là .

Bản sao một đối tượng trong Studio bằng cách sử dụng Sao chép hoặc Sao chép / Dán lựa chọn sẽ bỏ qua chính sở hữu của nó và đặt cho bản sao.


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

Capabilities

SecurityCapabilities
Đọc Song Song

Bộ năng lực được phép sử dụng cho các kịch bản bên trong ví ví dụ / trường hợpnày.Để các khả năng có hiệu lực, Instance.Sandboxed tính năng phải được bật.

Thuộc tính này được sử dụng bởi một tính năng thử nghiệm. Xem khả năng kịch bản để biết thêm chi tiết.

Name

Đọc Song Song

Một nhận dạng không duy nhất của Instance . Danh sách được sử dụng để giữ cho cấu trúc hệ thống đối tượng được tổ chức, cùng với việc cho phép các tập lệnh truy cập các đối tượng cụ thể.Tên của một instanz không thể vượt quá 100 ký tự về kích thước.

Tên của một đối tượng thường được sử dụng để truy cập đối tượng thông qua cấu trúc hệ thống dữ liệu bằng các phương pháp sau:


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

Để làm cho một đối tượng có thể truy cập bằng cách sử dụng dấu chấm tròn ( . ), tên của nó phải bắt đầu bằng một dấu gạch ngang hoặc chữ cái, và phần còn lại của tên chỉ có thể chứa chữ cái, số hoặc dấu gạch ngang (không có các ký tự đặc biệt khác).Nếu tên của một đối tượng không tuân theo cú pháp này, nó sẽ không thể truy cập bằng cách sử dụng phép tính dot và Luau sẽ không hiểu tên của nó như một nhận dạng.

Nếu nhiều hơn một đối tượng có cùng tên là anh em, bất kỳ nỗ lực nào để lập chỉ mục một đối tượng bằng cùng tên sẽ trả về chỉ một trong những đối tượng, tương tự như Instance:FindFirstChild(), nhưng không phải lúc nào cũng là đối tượng mong muốn.Nếu một đối tượng cụ thể cần được truy cập thông qua mã, nó được khuyến khích để cho nó một tên duy nhất hoặc đảm bảo rằng không có anh em nào của nó chia sẻ cùng một tên.

Xem thêm Instance:GetFullName() để có được tên đầy đủ bao gồm cấu trúc của đối tượng.

Parent

Không Sao Chép
Đọc Song Song

Thuộc tính Parent xác định cha cấp bậc của Instance .Các thuật ngữ sau đây được sử dụng phổ biến khi nói về cách thiết cài đặttính năng này:

  • Một đối tượng là một con trai của, hoặc là bị cha mẹ , một đối tượng khác khi đối tượng của nó được đặt thành đối tượng đó.

  • Các con cháu của một Instance là con của đối tượng đó, cộng với con cháu của con cái cũng như vậy.

  • Các tổ tiên của một Instance là tất cả các đối tượng mà instance là con cháu.

Nó là từ thuộc tính Parent của nhiều thành viên API khác nhận tên của họ, chẳng hạn như GetChildren()FindFirstChild() .Tính năng này cũng được sử dụng để quản lý xem một đối tượng có tồn tại trong trải nghiệm hay cần phải bị xóa.Miễn là cha của một đối tượng ở trong DataModel , được lưu trong một biến hoặc được tham chiếu bởi thuộc tính của đối tượng khác, đối tượng vẫn còn trong trải nghiệm; nếu không, đối tượng sẽ tự động bị xóa.

Gọi Destroy() sẽ đặt Parent của một Instance và tất cả con cháu của nó thành nil và cũng khóa tính chất Parent.Một lỗi được nâng lên khi đặt Parent của một đối tượng bị phá hủy.

Các đối tượng được tạo mới bằng cách sử dụng Instance.new() sẽ không có cha, và thường sẽ không hiển thị hoặc chức năng cho đến khi một được cài đặt.

Sao lưu đối tượng

Một đối tượng được tạo bởi máy chủ sẽ không sao chép cho khách hàng cho đến khi nó được gán cho một đối tượng được sao chép.Khi tạo một đối tượng và đặt nhiều thuộc tính, được khuyến khích đặt thuộc tính Parent cuối cùng .Điều này đảm bảo vật phẩm sao lưu một lần, thay vì sao lưu nhiều thay đổi tính năng.


local Workspace = game:GetService("Workspace")
-- Chỉnh sửa cha của ví ví dụ / trường hợpmới cuối cùng (được đề xuất)
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = Workspace

Tuy nhiên, nếu phần cha cho một Model mà cha của nó chưa được đặt, việc cha từng phần cho mô hình đó là có thể chấp nhận vì mô hình sẽ không được sao chép.

RobloxLocked

Ẩn
Bảo Mật Plugin
Đọc Song Song

Thuộc tính này đã được sử dụng để bảo vệ các đối tượng trong dịch vụ CoreGui không bị thay đổi bởi người dùng theo cách không được phép.Nó đã bị lỗi thời và không làm gì cả.

Sandboxed

Không Sao Chép
Đọc Song Song

Biến instance thành một thùng chứa cát , một tính năng thử nghiệm giới hạn các hành động mà các kịch bản bên trong một thùng chứa cụ thể có thể thực hiện.Xem khả năng kịch bản để biết thêm chi tiết.

UniqueId

UniqueId
Không Sao Chép
Không Thể Viết Kịch Bản
Bảo Mật Roblox
Đọc Song Song

Một nhận dạng duy nhất cho ví dụ / trường hợp, khác với Instance.Name mà không nhất thiết phải là duy nhất.

Phương Pháp

AddTag

()

Phương pháp này áp dụng một thẻ cho ví dụ / trường hợp, không có hiệu lực nếu thẻ đã được áp dụng.Thành công thêm một thẻ sẽ kích hoạt một tín hiệu được tạo bởi CollectionService:GetInstanceAddedSignal() với thẻ đã cho.

Cảnh báo
  • Các thẻ của một ví ví dụ / trường hợpđược thêm bởi phía khách sẽ bị xóa nếu máy chủ sau đó thêm hoặc xóa một thẻ trên ví dụ đó vì máy chủ sao chép tất cả các thẻ cùng nhau và thay thế các thẻ trước.

  • Khi đánh dấu một ví ví dụ / trường hợp, thông thường một số tài nguyên được sử dụng để cung cấp cho nhãn chức năng của nó, ví dụ như kết nối sự kiện hoặc bảng.Để ngăn chặn rò rỉ bộ nhớ, một ý tưởng tốt là dọn sạch chúng (cắt kết nối, đặt thành nil , v.v.) khi không còn cần thiết cho một thẻ.Làm điều này khi gọi Instance:RemoveTag() , gọi Instance:Destroy() , hoặc trong một chức năng kết nối với một tín hiệu được trả về bởi CollectionService:GetInstanceRemovedSignal() .

Tham Số

tag: string
Giá Trị Mặc Định: ""

Lợi Nhuận

()

ClearAllChildren

()

Chức năng này phá hủy tất cả con và con cháu của một ví ví dụ / trường hợp.

Nếu bạn không muốn phá hủy tất cả con cháu và con cháu , hãy sử dụng Instance:GetChildren() hoặc Instance:GetDescendants() để lặp qua những con cháu/con cháu đó và chọn những gì cần phá hủy.Ví dụ, mã trình bày sau đây sẽ phá hủy tất cả các BaseParts xuống từ một 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

Lợi Nhuận

()

Mẫu mã

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() tạo bản sao của một instance và tất cả các con trai của nó, bỏ qua tất cả các instance không phải Archivable .Bản sao của ví dụ gốc được trả lại bởi phương pháp này và Parent của nó được đặt thành nil .Lưu ý rằng nếu instance chính có Archivable được đặt thành false , chức năng này sẽ trả về nil .

Nếu một thuộc tính tham chiếu như ObjectValue.Value được đặt trong một ví ví dụ / trường hợpđược sao chép, giá trị của thuộc tính sao chép phụ thuộc vào giá trị gốc:

  • Nếu một thuộc tính tham chiếu đề cập đến một ví dụ đã cũng được sao chép, bản sao sẽ đề cập đến bản sao.
  • Nếu một thuộc tính tham chiếu đề cập đến một đối tượng đã không bị sao chép , giá trị tương tự được duy trì trong bản sao.

Lợi Nhuận

Mẫu mã

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

()

Đặt thuộc tính Instance.Parent thành nil , khóa thuộc tính Instance.Parent , cắt tất cả các kết nối, và gọi Destroy() trên tất cả các con.Chức năng này là cách đúng để loại bỏ các đối tượng không còn được yêu cầu.

Loại bỏ các đối tượng không cần thiết là quan trọng, vì các đối tượng và kết nối không cần thiết trong một nơi sử dụng lượng bộ nhớ có thể dẫn đến các vấn đề hiệu suất nghiêm trọng theo thời gian.

Là một tốt nhất sau khi gọi Destroy() trên một đối tượng, đặt bất kỳ biến nào tham chiếu đối tượng (hoặc con cháu của nó) thành nil .Điều này ngăn chặn mã của bạn không truy cập bất cứ thứ gì liên quan đến đối tượng.


local part = Instance.new("Part")
part.Name = "Hello, world"
part:Destroy()
-- Không làm như vậy:
print(part.Name) --> "Xin chào, thế giới"
-- Làm điều này để ngăn chặn dòng trên không hoạt động:
part = nil

Một lần Instance đã bị phá hủy bởi phương pháp này, nó không thể được sử dụng lại vì thuộc tính Instance.Parent bị khóa.Để tạm thời loại bỏ một đối tượng thay vì phá hủy nó, hãy đặt Parent để nil .Ví dụ:


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

Để phá hủy một đối tượng sau một khoảng thời gian nhất định, sử dụng Debris:AddItem() .


Lợi Nhuận

()

Mẫu mã

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

Ghi Song Song

Trả về tổ tiên đầu tiên của Instance người có Instance.Name bằng tên được cung cấp.

Chức năng này hoạt động theo chiều lên, có nghĩa là nó bắt đầu tại ví dụ / trường hợpngay lập tức Instance.Parent và hoạt động theo hướng DataModel .Nếu không tìm thấy tổ tiên phù hợp, nó trả về nil .

Các đoạn mã sau đây sẽ tìm thấy tổ tiên đầu tiên của đối tượng có tên là Car.


local car = object:FindFirstAncestor("Car")

Đối với các biến thể của chức năng này tìm tổ tiên của một lớp cụ thể, xem Instance:FindFirstAncestorOfClass()Instance:FindFirstAncestorWhichIsA() .

Tham Số

name: string

Cái Instance.Name để tìm kiếm.

Giá Trị Mặc Định: ""

Lợi Nhuận

The Instance được tìm thấy.

FindFirstAncestorOfClass

Ghi Song Song

Trả về tổ tiên đầu tiên của Instance người có Object.ClassName bằng với className đã được cung cấp.

Chức năng này hoạt động theo chiều lên, có nghĩa là nó bắt đầu tại ví dụ / trường hợpngay lập tức Instance.Parent và hoạt động theo hướng DataModel .Nếu không tìm thấy tổ tiên phù hợp, nó trả về nil .

Một sử dụng phổ biến của chức năng này là tìm kiếm Model một BasePart thuộc về. Ví dụ:


local model = part:FindFirstAncestorOfClass("Model")

Chức năng này là một biến thể của Instance:FindFirstAncestor() mà kiểm tra thuộc tính Object.ClassName thay vì Instance.Name .Instance:FindFirstAncestorWhichIsA() cũng tồn tại, sử dụng phương pháp Object:IsA() thay vì tôn trọng sự kế thừa lớp.

Tham Số

className: string

Cái Object.ClassName để tìm kiếm.

Giá Trị Mặc Định: ""

Lợi Nhuận

The Instance được tìm thấy.

FindFirstAncestorWhichIsA

Ghi Song Song

Trả về tổ tiên đầu tiên của Instance cho người mà Object:IsA() trả về true cho className đã cho.

Chức năng này hoạt động theo chiều lên, có nghĩa là nó bắt đầu tại ví dụ / trường hợpngay lập tức Instance.Parent và hoạt động theo hướng DataModel .Nếu không tìm thấy tổ tiên phù hợp, nó trả về nil .

Không giống như Instance:FindFirstAncestorOfClass() , chức năng này sử dụng Object:IsA() mà tuân thủ kế thừa lớp. Ví dụ:


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

Do đó, mẫu mã code sau đây sẽ trả về tổ tiên đầu tiên BasePart , bất kể nó là một WedgePart , MeshPart hoặc Part .


local part = object:FindFirstAncestorWhichIsA("BasePart")

Xem thêm Instance:FindFirstAncestor() .

Tham Số

className: string

Cái Object.ClassName để tìm kiếm.

Giá Trị Mặc Định: ""

Lợi Nhuận

The Instance được tìm thấy.

FindFirstChild

Ghi Song Song

Trả về con đầu tiên của Instance với tên đã cho, hoặc nil nếu không có con như vậy.Nếu tham số tùy chọn recursive không bắt buộc là true , chức năng này tìm kiếm tất cả các con trai thay vì chỉ con cái gần của Instance .

Kiểm tra sự tồn tại của một đối tượng

FindFirstChild() là cần thiết nếu bạn cần xác minh một đối tượng tồn tại trước khi tiếp tục.Cố gắng lập chỉ mục một con theo tên bằng cách sử dụng phép tính dấu chấm câu ném lỗi nếu con không tồn tại.


local Workspace = game:GetService("Workspace")
-- Các lỗi dòng tiếp theo nếu phần không tồn tại trong không gian làm việc
Workspace.Part.Transparency = 0.5

Sử dụng FindFirstChild() để kiểm tra trước tiên Part , sau đó sử dụng một tuyên bố if để chạy mã cần nó.


local Workspace = game:GetService("Workspace")
local part = Workspace:FindFirstChild("Part")
if part then
part.Transparency = 0.5
end
Tìm một đứa trẻ có tên phù hợp với một thuộc tính

Đôi khi Name của một đối tượng giống như của một tính năng của nó Parent .Khi sử dụng phép tính dấu chấm câu, các thuộc tính có ưu tiên hơn các con trong trường hợp chúng chia sẻ tên.

Trong ví dụ sau, một Folder gọi là "Màu" được thêm vào một Part , cũng có thuộc tính Part.Color.Part.Color tham chiếu đến Color3, không phải là Thư mục.


local part = Instance.new("Part")
local folder = Instance.new("Folder")
folder.Name = "Color"
folder.Parent = part
local c = part.Color --> Một Color3
local c2 = part:FindFirstChild("Color") --> The Folder

Lợi ích của việc sử dụng FindFirstChild() theo cách này là việc giới thiệu các thuộc tính mới không gây rủi ro cho mã của bạn.

Ghi chú về hiệu suất

FindFirstChild() mất khoảng 20% lâu hơn so với việc sử dụng phép tính dấu chấm câu và gần 8 lần lâu hơn so với việc chỉ lưu một tham chiếu đến một đối tượng.Do đó, bạn nên tránh gọi nó trong mã phụ thuộc vào hiệu suất như trong vòng lặp chặt chẽ hoặc chức năng kết nối với RunService.HeartbeatRunService.PreRender .Thay vào đó, lưu kết quả trong một biến, hoặc xem xét sử dụng ChildAdded hoặc WaitForChild() để phát hiện khi một đứa con của một tên nhất định trở nên có sẵn.

Tham Số

name: string

The Instance.Name để tìm kiếm.

Giá Trị Mặc Định: ""
recursive: boolean

Liệu có nên thực hiện tìm kiếm theo cấp chồng hay không.

Giá Trị Mặc Định: false

Lợi Nhuận

The Instance được tìm thấy.

Mẫu mã

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

Ghi Song Song

Trả về con đầu tiên của InstanceClassName bằng với đã cho className .Không giống như Instance:FindFirstChildWhichIsA() , chức năng này chỉ trả về các đối tượng có lớp phù hợp với className , bỏ qua sự kế thừa lớp.Nếu không tìm thấy con trùng khớp, chức năng này trả về nil .

Tham Số

className: string

Cái Object.ClassName để tìm kiếm.

Giá Trị Mặc Định: ""

Lợi Nhuận

The Instance được tìm thấy.

Mẫu mã

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

Ghi Song Song

Trả về con đầu tiên của Instance cho người mà Object:IsA() trả về true cho className đã cho.

Nếu không tìm thấy con trùng khớp, chức năng này trả về nil .Nếu tham số lặp lại bắt buộc là true, chức năng này tìm kiếm tất cả các con trai thay vì chỉ con cái ngay lập tức của Instance .

Không giống như Instance:FindFirstChildOfClass() , chức năng này sử dụng Object:IsA() mà tuân thủ kế thừa lớp. Ví dụ:


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

Do đó, mẫu mã code sau đây sẽ trả về đứa con thứ nhất BasePart , bất kể nó là một WedgePart , MeshPart hoặc Part .


local part = object:FindFirstChildWhichIsA("BasePart")

Các nhà phát triển tìm kiếm một đứa trẻ bằng tên, nên sử dụng Instance:FindFirstChild() thay thế.

Tham Số

className: string

The Object.ClassName để tìm kiếm.

Giá Trị Mặc Định: ""
recursive: boolean

Liệu có nên thực hiện tìm kiếm theo cấp chồng hay không.

Giá Trị Mặc Định: false

Lợi Nhuận

The Instance được tìm thấy.

FindFirstDescendant

Ghi Song Song

Trả về con cháu đầu tiên được tìm thấy với Instance.Name được cho.

Phương pháp này bị vô hiệu hóa và không thể được sử dụng.Để tìm con cháu đầu tiên của một ví dụ / trường hợp, hãy xem xét sử dụng tham số recursive trên Instance:FindFirstChild() thay vào đó.

Tham Số

name: string

The Instance.Name để tìm kiếm.

Giá Trị Mặc Định: ""

Lợi Nhuận

The Instance được tìm thấy.

GetActor

Ghi Song Song

Nếu Instance là một Actor, Actor bản thân nó được trả về.Nếu không, tổ tiên gần nhất của nó Actor được trả về.Nếu không có tổ tiên là Actor , kết quả là nil .


Lợi Nhuận

The Actor được tìm thấy.

GetAttribute

Variant
Ghi Song Song

Phương pháp này trả về giá trị đã được gán cho tên thuộc tính đã cho. Nếu không có thuộc tính nào được gán, nil được trả về.

Ví dụ, đoạn mã sau đây đặt và sau đó lấy giá trị của thuộc tính InitialPosition của ví dụ / trường hợp:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)
Xem thêm
  • Instance:SetAttribute() mà đặt thuộc tính với tên được cung cấp thành giá trị được cho.
  • Instance:GetAttributes() trả về một từ điển các cặp chìa khóa-giá trị cho mỗi thuộc tính của một ví ví dụ / trường hợp.

Tham Số

attribute: string

Tên của thuộc tính được truy xuất.

Giá Trị Mặc Định: ""

Lợi Nhuận

Variant

Giá trị đã được gán cho tên thuộc tính đã được cung cấp. Nếu không có thuộc tính nào được gán, nil được trả về.

GetAttributeChangedSignal

Chức năng này trả về một sự kiện có hành vi tương tự như sự kiện Changed nhưng chỉ bắn khi có sự thay đổi cụ thể về thuộc tính; hiệu quả nó tương tự với GetPropertyChangedSignal() nhưng đối với các thuộc tính.

Nói chung, đây là một ý tưởng tốt để sử dụng phương pháp này thay vì kết nối với Changed với một chức năng kiểm tra tên thuộc tính.Các cuộc gọi tiếp theo đến phương pháp này trên cùng một đối tượng với cùng tên thuộc tính trả về cùng một sự kiện.

Ví dụ mã sau đây trả về một tín hiệu kích hoạt chức năng attributeChanged() khi thuộc tính phần InitialPosition thay đổi:


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)

Xem thêm Instance.AttributeChanged nơi bắn bất cứ khi nào bất kỳ thuộc tính nào được thay đổi trên ví dụ / trường hợp.

Tham Số

attribute: string

Tên của thuộc tính được chỉ định mà tín hiệu thay đổi đang được trả về.

Giá Trị Mặc Định: ""

Lợi Nhuận

Một sự kiện bắt lửa khi đặc tính được cung cấp thay đổi.

GetAttributes

Ghi Song Song

Phương pháp này trả về một từ điển các cặp chìa khóa-giá trị cho mỗi thuộc tính mà chìa khóa là tên thuộc tính và giá trị là một giá trị không nil .

Ví dụ, đoạn mã sau đây xuất các thuộc tính và giá trị của một ví dụ / trường hợp:


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

Xem thêm Instance:GetAttribute() đó trả về giá trị đã được gán cho tên thuộc tính đã cho.


Lợi Nhuận

Một từ điển của chuỗi → cặp biến thể cho mỗi thuộc tính mà chuỗi là tên của thuộc tính và biến thể là giá trị không bằng không.

GetChildren

Instances
Ghi Song Song

Trả về một array (một bảng được đánh số theo số thập phân) chứa tất cả con trực tiếp của ví dụ / trường hợp, hoặc mỗi Instance mà địa chỉ Parent của nó bằng với object.Mảng có thể được lặp lại khi sử dụng một vòng lặp số hoặc chung:


local Workspace = game:GetService("Workspace")
-- Ví dụ vòng lặp số
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")
-- Ví dụ vòng lặp chung
local children = Workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

Các con trẻ được sắp xếp theo thứ tự mà thuộc tính Parent của chúng được đặt vào đối tượng.

Xem thêm chức năng GetDescendants .


Lợi Nhuận

Instances

Một mảng chứa con của ví dụ / trường hợp.

Mẫu mã

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

Không Thể Duyệt
Bảo Mật Plugin

Trả về một chuỗi mã hóa của ID gỡ lỗi được sử dụng nội bộ bởi Roblox. Lưu ý rằng:

  • Vật phẩm này được bảo vệ. Cố gắng sử dụng nó trong Script hoặc LocalScript sẽ gây ra lỗi.
  • Một ID gỡ lỗi là một ID được sử dụng trong quá trình gỡ lỗi.Nó cho phép một trình gỡ lỗi đọc mỗi lệnh trước khi ứng dụng xử lý nó.Tất cả các đối tượng trong Roblox hoạt động như các quy trình và mỗi lệnh chạy (hoặc 'mã') có thể được gỡ lỗi nếu cần thiết.
  • Điều này có thể hữu ích cho các plugin cần phân biệt các đối tượng tương tự với nhau (như các đối tượng có cùng tên).

Tham Số

scopeLength: number

Chiều dài phạm vi.

Giá Trị Mặc Định: 4

Lợi Nhuận

Chuỗi ID gỡ lỗi.

Mẫu mã

Instance:GetDebugId

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

GetDescendants

Ghi Song Song

Phương pháp đối tượng này trả về một array chứa tất cả các con trai của đối tượng đó.Không giống như Instance:GetChildren(), chỉ trả về con cái ngay lập tức của một đối tượng, phương pháp này tìm tất cả con cái của đối tượng, tất cả con cái của những con cái đó, và như vậy.


Lợi Nhuận

Một mảng chứa con cháu của ví dụ / trường hợp.

Mẫu mã

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

Ghi Song Song

Trả về một chuỗi mô tả nguồn gốc của ví dụ / trường hợp.Chuỗi là sự kết hợp của Name của đối tượng và tổ tiên của nó, được tách bởi dấu chấm câu.The DataModel ( game ) không được xem xét.Ví dụ, một Part trong Workspace có thể trả về Workspace.Part.

Khi gọi trên một Instance không phải là con cháu của DataModel , chức năng này xem xét tất cả các tổ tiên lên tới và bao gồm tổ tiên cao nhất mà không có Parent .

Chức năng này hữu ích cho việc ghi lại và gỡ lỗi.Bạn không nên cố gắng phân tích chuỗi trả về cho bất kỳ hoạt động hữu ích nào; chức năng này không thoát khỏi các khoảng trống (hoặc bất kỳ biểu tượng nào khác) trong tên đối tượng.Nói cách khác, mặc dù đầu ra của nó thường xuất hiện là một nhận dạng Luau hợp lệ, nó không được đảm bảo.


Lợi Nhuận

Tên đầy đủ của Instance .

Mẫu mã

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

Tham Số

name: string
Giá Trị Mặc Định: ""

Lợi Nhuận

Variant

GetStyledPropertyChangedSignal

Tham Số

property: string
Giá Trị Mặc Định: ""

Lợi Nhuận

GetTags

Ghi Song Song

Phương pháp này trả về một danh sách các thẻ được áp dụng cho ví ví dụ / trường hợpđược cho, dưới dạng chuỗi.Bạn có thể thêm thẻ vào Studio trong cửa sổ Tính năng hoặc tại thời gian chạy với AddTag() .

Phương pháp này hữu ích khi bạn muốn làm điều gì đó với nhiều thẻ trên một ví dụ cùng một lúc.Tuy nhiên, không hiệu quả khi sử dụng phương pháp này để kiểm tra sự tồn tại của một thẻ duy nhất; thay vào đó, sử dụng HasTag() để kiểm tra một thẻ cụ thể.


Lợi Nhuận

HasTag

Ghi Song Song

Phương pháp này trả về true nếu thẻ được cung cấp đã được thêm vào đối tượng.Bạn có thể thêm nhãn vào Studio trong cửa sổ Tính năng hoặc tại thời gian chạy với AddTag() .

Tham Số

tag: string
Giá Trị Mặc Định: ""

Lợi Nhuận

IsAncestorOf

Ghi Song Song

Trả về true nếu một Instance là tổ tiên của con cháu được cho.

Một Instance được coi là tổ tiên của một đối tượng nếu đối tượng của nó Instance.Parent hoặc một trong những cha của nó Instance.Parent được đặt thành Instance .

Xem thêm, Instance:IsDescendantOf() .

Tham Số

descendant: Instance

Những người con trai Instance .

Giá Trị Mặc Định: ""

Lợi Nhuận

Đúng nếu Instance là tổ tiên của con cháu được cho.

Mẫu mã

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

Ghi Song Song

Trả về true nếu một Instance là con cháu của tổ tiên được cho.

Lưu ý rằng IsDescendantOf() không thể được sử dụng với một tham số của nil để kiểm tra xem một đối tượng đã bị xóa hay chưa.

Xem thêm Instance:IsAncestorOf() .

Tham Số

ancestor: Instance

Tổ tiên Instance .

Giá Trị Mặc Định: ""

Lợi Nhuận

Đúng nếu Instance là con cháu của tổ tiên được cho.

Mẫu mã

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

Trả về true nếu giá trị được lưu trong thuộc tính được chỉ định không phải là mặc định.Ví dụ, nếu xuất thuộc tính Rotation của một TextLabel cho thấy 0 , thì gọi IsPropertyModified("Rotation") trên nhãn sẽ trả về false bởi vì 0 là giá trị mặc định cho TextLabel.Rotation .

Tham Số

property: string
Giá Trị Mặc Định: ""

Lợi Nhuận

Boolean chỉ ra xem liệu tính năng có bị thay đổi hay không.

RemoveTag

()

Phương pháp này xóa một thẻ từ một ví ví dụ / trường hợp.Nó sẽ không phát ra lỗi nếu đối tượng không có thẻ.Loại bỏ thành công một thẻ sẽ kích hoạt một tín hiệu được tạo bởi CollectionService:GetInstanceRemovedSignal() với thẻ đã cho.

Lưu ý rằng khi đánh dấu một ví ví dụ / trường hợp, thông thường một số tài nguyên được sử dụng để cung cấp cho nhãn chức năng của nó, ví dụ như kết nối sự kiện hoặc bảng.Để ngăn chặn rò rỉ bộ nhớ, một ý tưởng tốt là dọn sạch chúng (cắt kết nối, đặt thành nil , v.v.) khi không còn cần thiết cho một thẻ.

Tham Số

tag: string
Giá Trị Mặc Định: ""

Lợi Nhuận

()

ResetPropertyToDefault

()

Đặt lại một thuộc tính về giá trị mặc định của nó.Ví dụ, gọi ResetPropertyToDefault("Rotation") trên TextLabel là tương đương với việc đặt giá trị Rotation của nó thành 0 (giá trị mặc định của thuộc tính).

Tham Số

property: string
Giá Trị Mặc Định: ""

Lợi Nhuận

()

SetAttribute

()

Phương pháp này đặt thuộc tính với tên được cung cấp cho giá trị được cho.Nếu giá trị được cung cấp là nil , thuộc tính sẽ bị xóa, vì nil được trả lại theo mặc định.

Ví dụ, đoạn mã sau đây thiết lập thuộc tính InitialPosition của ví dụ / trường hợpthành Vector3.new(0, 10, 0) :


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Hạn chế

Yêu cầu đặt tên và hạn chế:

  • Tên chỉ được sử dụng các ký tự alphanumeric và dấu gạch ngang.
  • Không có không gian hoặc biểu tượng duy nhất được phép.
  • Chuỗi phải là 100 ký tự hoặc ít hơn.
  • Các tên không được phép bắt đầu với RBX trừ khi người gọi là một kịch bản lõi Roblox (dành riêng cho Roblox).

Khi cố gắng đặt một thuộc tính cho một đánh máykhông được hỗ trợ, một lỗi sẽ được ném.

Xem thêm
  • Instance:GetAttribute() mà trả giá trị đã được gán cho tên thuộc tính đã cho.
  • Instance:GetAttributes() trả về một từ điển các cặp chìa khóa-giá trị cho mỗi thuộc tính của một ví ví dụ / trường hợp.

Tham Số

attribute: string

Tên của thuộc tính đang được cài đặt.

Giá Trị Mặc Định: ""
value: Variant

Giá trị để đặt thuộc tính được chỉ định cho.

Giá Trị Mặc Định: ""

Lợi Nhuận

()

WaitForChild

Có Thể Sinh Lợi

Trả về con của Instance với tên được cung cấp.Nếu con không tồn tại, nó sẽ cho ra luồng hiện tại cho đến khi nó làm.Nếu tham số timeOut được xác định, phương pháp này sẽ hết giờ sau số giây được xác định và trả về nil .

Sử dụng chính

WaitForChild() rất quan trọng khi làm việc trên mã được thực hiện bởi khách hàng trong một LocalScript .Cơ chế Roblox không đảm bảo thời gian hoặc thứ tự mà các đối tượng được sao lưu từ máy chủ sang khách hàng.Ngoài ra, nếu một trải nghiệm có Workspace.StreamingEnabled được đặt thành true, BaseParts những thứ ở xa nhân vật của người chơi có thể không được phát lên máy khách, có thể gây ra lỗi khi lập chỉ mục các đối tượng chưa tồn tại trên máy khách.

Ghi chú
  • Chức năng này không trả nếu có một đứa con với tên đã cho khi cuộc gọi được thực hiện.
  • Instance:FindFirstChild() là một lựa chọn hiệu quả hơn cho WaitForChild() đối với các đối tượng được cho là tồn tại.
  • Nếu cuộc gọi đến phương thức này vượt quá 5 giây mà không trả lại, và không có tham số timeOut được đặt, một cảnh báo sẽ được in vào đầu ra mà luồng có thể sản xuất vô cực.

Tham Số

childName: string

Cái Instance.Name để tìm kiếm.

Giá Trị Mặc Định: ""
timeOut: number

Một tham số thời gian tùy chọn.

Giá Trị Mặc Định: ""

Lợi Nhuận

The Instance được tìm thấy.

Mẫu mã

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

Sự Kiện

AncestryChanged

Bắt lửa khi tính chất Instance.Parent của đối tượng hoặc một trong những tổ tiên của nó thay đổi.

Sự kiện này bao gồm hai tham số: child ám chỉ đến InstanceInstance.Parent thực sự đã được thay đổi, trong khi parent ám chỉ đến Instance.Parent mới của ví ví dụ / trường hợpnày.

Bạn có thể sử dụng sự kiện này để theo dõi việc xóa một instance trong Studio, chẳng hạn như xóa bằng tay trong Explorer hoặc thông qua một plugin.Nếu bạn cần phát hiện khi một ví dụ bị phá hủy bằng cách sử dụng Instance:Destroy() , hãy sử dụng sự kiện Instance.Destroying thay thế.

Tham Số

child: Instance

Các Instance của Instance.Parent đã được thay đổi.

parent: Instance

Cái mới Instance.Parent của InstanceInstance.Parent đã thay đổi.


Mẫu mã

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

Sự kiện này bắt lửa khi bất kỳ thuộc tính nào được thay đổi trên ví dụ / trường hợp, bao gồm cả khi thuộc tính được đặt thành nil .Tên của thuộc tính đã thay đổi được chuyển đến chức năng kết nối.

Ví dụ, đoạn mã sau đây kết nối chức năng attributeChanged() với bắn khi nào một trong những thuộc tính của phần thay đổi:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)

Xem thêm Instance:GetAttributeChangedSignal() mà trả về một sự kiện bắt lửa khi một thuộc tính cụ thể thay đổi.

Tham Số

attribute: string

Tên thuộc tính đã được thay đổi.


ChildAdded

Lửa sau khi một đối tượng được cha trực tiếp cho đối tượng này Instance .

Lưu ý, khi sử dụng chức năng này trên một khách hàng để phát hiện các đối tượng được tạo bởi máy chủ, cần phải sử dụng Instance:WaitForChild() khi lập chỉ mục các con trai của đối tượng này.Điều này là do đối tượng và con cháu của nó không được đảm bảo sao lưu từ máy chủ sang khách hàng cùng một lúc.Ví dụ:


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)

Lưu ý, chức năng này chỉ hoạt động cho con cái ngay lập tức của Instance . Đối với một chức năng bắt tất cả các con cháu, hãy sử dụng Instance.DescendantAdded .

Xem thêm Instance.ChildRemoved .

Tham Số

child: Instance

Các Instance đã được thêm vào.


Mẫu mã

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

Lửa bùng phát sau khi một đứa trẻ bị loại bỏ khỏi đây Instance .

Loại bỏ đề cập đến khi cha của một đối tượng được thay đổi từ điều này Instance sang một cái gì đó khác với điều này Instance .Lưu ý, sự kiện này cũng sẽ bắt lửa khi một đứa con bị phá hủy (sử dụng Instance:Destroy() ) vì chức năng phá hủy đặt cha của một đối tượng thành nil .

Chức năng này chỉ hoạt động cho con cái ngay lập tức của Instance . Đối với một chức năng nắm bắt tất cả các con cháu, sử dụng Instance.DescendantRemoving .

Xem thêm Instance.ChildAdded .

Tham Số

child: Instance

Các Instance đã bị xóa bỏ.


Mẫu mã

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

Sự kiện này bắt lửa sau khi một con cháu được thêm vào Instance .

Khi nó bắn cho mỗi con cháu, nuôi một đối tượng cho Instance sẽ bắn sự kiện cho đối tượng này và tất cả con cháu của nó một cách riêng lẻ.

Nếu bạn chỉ quan tâm đến con trực tiếp của Instance , hãy sử dụng Instance.ChildAdded thay thế.

Xem thêm Instance.DescendantRemoving .

Tham Số

descendant: Instance

Các Instance đã được thêm vào.


Mẫu mã

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

Sự kiện này bắn ngay lập tức trước khi cha Instance thay đổi như vậy một ví dụ con trai sẽ không còn là con trai.Destroy() thay đổi Parent của một ví ví dụ / trường hợpthành nil , vì vậy gọi phương pháp đó trên con trai của cha sẽ gây ra sự kiện này bắt lửa.

Vì sự kiện này bắt lửa trước khi loại bỏ con cháu, cha của con cháu sẽ không thay đổi tại thời điểm bắn sự kiện này.Nếu con cháu cũng là một đứa con trực tiếp của cha mẹ, sự kiện này sẽ bắn trước khi .

Nếu con cháu có con, sự kiện này bắt lửa với con cháu trước tiên, sau đó là con cháu của nó.

Cảnh báo

Sự kiện này bắt lửa với đối tượng con đang bị xóa.Cố gắng đặt Parent của con trai thành một cái gì đó khác sẽ thất bại.Dưới đây là một ví dụ minh họa điều này:


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

Xem thêm DescendantAdded .

Tham Số

descendant: Instance

Cái Instance đang bị xóa bỏ.


Mẫu mã

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 sẽ không bao giờ bị xóa khỏi bộ nhớ trong khi chức năng kết nối vẫn đang sử dụng nó.Tuy nhiên, nếu chức năng cho ra ở bất kỳ điểm nào, Instance và con cháu của nó sẽ được cha mẹ hóa thành nil .

Nếu thuộc tính Workspace.SignalBehavior được đặt thành Enum.SignalBehavior.Immediate , sự kiện này sẽ bắt lửa ngay lập tức trước khi Instance hoặc một trong những tổ tiên của nó bị phá hủy với Instance:Destroy() .

Nếu thuộc tính Workspace.SignalBehavior được đặt thành Enum.SignalBehavior.Deferred , sự kiện này sẽ bắt lửa tại điểm tái khởi động tiếp theo, đó sẽ là sau khi Instance hoặc một trong các tổ tiên của nó bị phá hủy với Instance:Destroy() .

Với hành vi Deferred , kết nối một kịch bản vào sự kiện riêng của nó Instance.Destroying là khó khăn, vì kịch bản sẽ bị phá hủy trước khi có thể gọi lại (ý nghĩa là nó sẽ không thực thi).

Khi xóa một Instance trong Studio, chẳng hạn như xóa bằng tay qua Explorer hoặc thông qua một plugin, Instance không bị phá hủy.Thay vào đó, cha mẹ được đặt thành nil mà bạn có thể theo dõi với Instance.AncestryChanged .


Mẫu mã

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