Instance
*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.
Instância là lớp cơ sở cho tất cả các lớp trong trình tự lớp Roblox có thể là một phần của cây dữ liệu. Không thể tạo trực tiếp các thể đối tượng Instância.
Instância tem một chức năng đặc biệt tên là Instance.new() được sử dụng để tạo nên các đối tượng thông qua mã. Đây chức năng nhận tên lớp như một tham số và trả lại đối tượng đã tạo. Các lớp và dịch vụ tương tượng không thể được tạo với chức
Tóm Tắt
Thuộc Tính
Xác định nếu một Instance và con cháu của nó có thể được clon bằng cách sử dụng Instance:Clone() , và có thể được lưu/phát sóng.
Bộ sưu tập các kĩ năng cho phép bạn sử dụng cho các tập lệnh bên trong thùng này.
Một không độc nhất của Instance .
Xác định cha cấp của Instance .
Một đặt tính bị lỗi đã được sử dụng để bảo vệ các đối tượng CoreGui .
Chuyển trình duyệt thành một Container Sandbox.
Phương Pháp
Áp dụng một nhãn cho phần ví dụ / trường hợp.
Hành này tiêu diệt tất cả con cái của một ví dụ / trường hợp.
Tạo một bản sao của một instância và tất cả những con cháu của nó, bỏ qua những instância không phải là Archivable .
Đặt độ Instance.Parent để nil, khóa độ Instance.Parent độ, kết nối tất cả các kết nối và gọi Hủy đối với tất cả con cháu.
Trả lại tiền nhân đầu tiên của Instance Whose Instance.Name is equal to the given name.
Trả lại tiền nhân đầu tiên của Instance whose Object.ClassName is equal to the given namespace.
Trả lại tiền nhân đầu tiên của Instance cho người đó Object:IsA() trả lại cho các tên cấp cao đã được định.
Điều kiện trả lại: Điều kiện trả lại: Return the first child of the Instance found with the given name.
Trả lại con đầu tiên của Instance whose ClassName is equal to the given namespace.
Trả lại con đầu tiên của Instance cho người đó Object:IsA() trả lại true cho kiểu tên đã được cho.
Trả lại con cháu đầu tiên được tìm thấy với Instance.Name đã được cung cấp.
Trả lại Actor được liên kết với Instância, nếu có.
Trả lại giá trị đã được gán cho tên đặc tính đã được gán.
Trả lại một sự kiện khi thuộc tính đã thay đổi.
Trả lại một từ điển các thuộc tính của ví dụ / trường hợp.
Trả lại một dàn đều các con của ví dụ / trường hợp.
Trả lại một chuỗi dữ liệu đã mã hóa của ID debug được sử dụng bên trong bởi Roblox.
Trả lại một dàn bao gồm tất cả các con của instan.
Trả lại một chuỗi mô tả gốc của ví dụ / trường hợp.
Lấy một loạt các thẻ được áp dụng cho instância.
Kiểm tra có phải một instâne có nhãn đã được cung cấp không.
Trả về true nếu một Instance là tổ tiên của người con cháu được cho.
Trả về true nếu một Instance là con cháu của người tiền nhiễm đã được cho.
Loại bỏ một nhãn từ ví dụ / trường hợp.
Đặt thuộc tính với tên được cung cấp cho giá trị được cung cấp.
Trả lại con của Instance với tên đã được cung cấp. Nếu con của con không tồn tại, nó sẽ tạo ra một luồng hiện tại cho đến khi nó tồn tại.
Sự Kiện
Lửa khi đặt tính Instance.Parent của đối tượng hoặc một trong những tiền nhân của nó.
Lửa mỗi khi một đặc tính được thay đổi trên Instance .
Lửa sau khi một đối tượng được phụ huynh cho đối tượng này Instance .
Lửa sau khi một đứa trẻ được loại bỏ khỏi Instance này.
Lửa sau khi một con cháu được thêm vào Instance .
Lửa ngay lập tức trước khi một con cháu của Instance bị xóa.
Lửa ngay trước (hoặc đã được hoãn cho đến sau) khi các thành phần được phá hủy bằng cách sử dụng Instance:Destroy() .
Thuộc Tính
Archivable
Thuộc tính này xác định whether the instance should be included when the experience is published or saved, or when Clone() is called on one of the ví dụ / trường hợp's ancestors. Calling Clone() directly on an instance will return nil if that instance is 1>
Bắt chước một đối tượng trong Studio bằng cách sử dụng Duplicate hoặc Copy / Paste tùy chọn sẽ bỏ qua tính đa dụng 1> Class.Instance.Archivable|Archivable1> của nó và thiết lập 4> Class
local part = Instance.new("Part")print(part:Clone()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
Bộ sưu tập các khả năng cho phép được sử dụng cho các script ở trong 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.
Đặ性 này được sử dụng bởi một tính năng thử nghiệm. Xem trang Kĩ Năng Trình Bịnh để biết thêm chi tiết.
Name
Một không độc nhất của Instance .
Đây là một danh xưng mô tả một đối tượng. Tên không phải là một danh xưng độc nhất; nhiều con của một đối tượng có thể chia sẻ cùng một danh xưng. Tên được sử dụng để giữ cấp độ hiệp hội của đối tượng, cùng với việc cho phép các con của đối tượng truy
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ấp độ dữ liệu bằng cách sử dụng các phương pháp sau đây:
local baseplate = workspace.Baseplatelocal baseplate = workspace["Baseplate"]local baseplate = workspace:FindFirstChild("BasePlate")
Để làm cho một đối tượng truy cập được bằng cách sử dụng dấu chấm dấu, tên của một đối tượng phải bắt đầu bằng một dấu chấm câu hoặc chữ cái. Tên của đối tượng không thể bắt đầu bằng một dấu chấm câu hoặc chữ
Nếu hơn một đối tượng có cùng tên là con cái của một đối tượng thì bất kỳ lần nào cố gắng xếp chỉnh đối tượng bằng cùng tên đó sẽ trả về đối tượng duy nhất trong số các đối tượng tương tự được tìm thấ
Ghi chú, một tên đầy đủ bao gồm cấp độ thượng tầng của ví dụ / trường hợpcó thể được nhận bằng cách sử dụng Instance:GetFullName() .
Parent
Thuộc tính Cha xác định cha cấp cao nhất của Instance . The following terminology is commonly used when talking about how this property is cài đặt:
- Một đối tượng là một con của ( phụ huynh của ) một đối tượng khác khi cha mẹ của nó được đặt vào đối tượng đó.
- con cháu của một Class.Instance là con cháu của thiết bị đó, plus con cháu của trẻ em cũng vậy.
- Các tiền nhân của một Instance là tất cả các thống kê đối tượng mà Instância là một con cháu.
Nó đến từ thuộc tính này mà nhiều thành viên API khác nhận tên của họ, chẳng hạn như GetChildren và FindFirstChild .
Hàm Remove tạo ra thuộc tính này để là nil. Gọi Destroy sẽ tạo ra thân của một Instance và tất cả các con cái của nó đều được đặ
Thuộc tính này cũng được sử dụng để quản lý có sự hiện diện của một đối tượng trong trò chơi hay không cần bị xóa. As long as an objects parent is in the Class
Những thống kê mới tạo bằng cách sử dụng Instance.new() sẽ không có cha mẹ, và thường sẽ không được hiển thị hoặc chức năng cho đến khi một được cài đặt. Việc tạo thành một thống kê có hai bước: tạo thống kê và sau đó đặt cha mẹ của nó.
-- Create a part and parent it to the workspacelocal part = Instance.new("Part")part.Parent = workspace-- Instance new can also take Parent as a second parameterInstance.new("NumberValue", workspace)
Khi một thay đổi được thực hiện đối với một số thuộc tính nhất định trong khi một ví dụ / trường hợptượng được gắn vào trong DataModel, động cơ có thể cần phải thực hiện công việc thêm để đạt được kết quả tốt hơn (
Replication đối tượng
Một đối tượng được tạo bởi máy chủ sẽ không bị sao chép cho đến khi nó được gắn với một đối tượng nào đó mà được gắn với nó. Khi tạo một đối tượng thì đặt nhiều thuộc tính khác nhau, được đề xuất để đặt cha đến cuố
local part = Instance.new("Part") -- Tránh sử dụng tham số thứ hai ở đâypart.Anchored = truepart.BrickColor = BrickColor.new("Really red")-- Nhiều thay đổi tính chất khác có thể xảy ra ở đây...-- Luôn đặt cha mẹ cuối cùng!part.Parent = workspace
Tuy nhiên, nếu bạn đang làm cha các bộ phận của bạn vào một Model whose parent chưa được cài đặt, thì việc cha mỗi bộ phận vào mô hình đó là được vì mô hình đó vẫn chưa được sao chép.
RobloxLocked
Đặ性 này đã được sử dụng để bảo vệ các đối tượng trong dịch vụ CoreGui khỏi bị thay đổi bởi người dùng theo cách không được ủy quyền. Nó đã bị deprecated và không làm gì được.
Sandboxed
Chuyển instância thành một Container Sandbox. Container Sandbox là một tính năng thử nghiệm mà giới hạn những hành động mà các script trong mộtContainer cụ thể có thể thực hiện.
Xem trang Kĩ Thuật Số Script để biết thêm chi tiết.
UniqueId
Phương Pháp
AddTag
Phương thức này áp dụng một nhãn cho instância, với không có hiệu ứng nếu nhãn đã được áp dụng. Thành công thêm một nhãn sẽ kích hoạt một tín hiệu được tạo bởi CollectionService:GetInstanceAddedSignal() với nhãn đã được cung cấp.
Lưu ý rằng khi gắn nhãn cho một ví dụ / trường hợp, thường có một số tài nguyên được sử dụng để cung cấp chức năng cho nhãn, chẳng hạn như kết
Tham Số
Lợi Nhuận
ClearAllChildren
Hành này tiêu diệt tất cả con cái của một ví dụ / trường hợp.
Như Instance:Destroy() cũng gọi chính mình trên con cháu của một đối tượng nó được sử dụng trên, chức năng này sẽ tiêu diệt tất cả các con cháu.
Alternatives to ClearAllChildren
Nếu nhà phát triển không muốn phá hủy tất cả các con cháu, họ nên sử dụng Instance:GetChildren() hoặc Instance:GetDescendants() để lặp qua một đối tượng và chọn những gì để tiêu diệt. Ví dụ, mẫu mã code sau đây sẽ tiêu diệt tất cả các
for _, instance in object:GetDescendants() doif instance:IsA("BasePart") theninstance:Destroy()endend
Lợi Nhuận
Mẫu mã
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
Clone tạo một bản sao của một instância và tất cả các con cái của nó, bỏ qua tất cả những instância không phả
Nếu một thuộc tính tham khảo như ObjectValue.Value được đặt trong một instanti nhân ví dụ / trường hợp, giá trị của thuộc tính bản sao phụ thuộc vào giá trị của nguồn gốc:
- Nếu một thuộc tính tham chiếu đến một instância đã được cũng cloned, bản sao sẽ đề cập đến bản sao.
- Nếu một thuộc tính tham chiếu đến một đối tượng đã được không sao chép, giá trị tương tự được duy trì trong bản sao.
Lợi Nhuận
Mẫu mã
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 độ Instance.Parent để nil, khóa độ Instance.Parent độ, kết nối tất cả các kết nối và gọi Destroy on all children. Đây là cách đúng đắn để xử lý những thứ không c
Mẹo: Sau khi gọi Destroy trên một đối tượng, đặt bất kỳ biến nào chỉ tham chiếu đối tượng (hoặc con cháu của nó) để nil. Điều này ngăn chặn mã của bạn khỏi truy cập bất kỳ điều gì để làm với đối tượng.
local part = Instance.new("Part")part.Name = "Hello, world"part:Destroy()-- Đừng làm điều nà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 khi một Class.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 đã bị khóa. Để tạm thời loại bỏ một đối tượng, hãy đặt Instance.Parent để nil thay vào đó. Ví d
object.Parent = nilwait(2)object.Parent = workspace
Để tiêu diệt một đối tượng sau một thời gian cố định, hãy sử dụng Debris:AddItem() .
Lợi Nhuận
Mẫu mã
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
Trả lại tiền nhân đầu tiên của Instance Whose Instance.Name is equal to the given name.
Hàm này hoạt động lên trên, có nghĩa là nó bắt đầu tại ngay cảnh trực tiếp của ví dụ / trường hợp's và hoạt động lên <a href="/reference/engine/datamodel.md"> Class.DataModel</a>. Nếu không tìm thấy tổ tiên tương ứng, nó sẽ trả về nil.
Các câu code dưới đây sẽ tìm thấy người tiền nhi của đối tượng 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 nguồn gốc của một lớp cụ thể, xin vui lòng tham khảo Instance:FindFirstAncestorOfClass() và Instance:FindFirstAncestorWhichIsA() .
Tham Số
Các Instance.Name để tìm kiếm.
Lợi Nhuận
FindFirstAncestorOfClass
Trả lại tiền nhân đầu tiên của Instance whose Object.ClassName is equal to the given namespace.
Hàm này hoạt động lên trên, có nghĩa là nó bắt đầu tại ngay cảnh trực tiếp của ví dụ / trường hợp's và hoạt động lên <a href="/reference/engine/datamodel.md"> Class.DataModel</a>. Nếu không tìm thấy tổ tiên tương ứng, nó sẽ trả về nil.
Một sử dụng phổ biến của hàm này là tìm kiếm Model một BasePart thuộc về nó. Ví dụ:
local model = part:FindFirstAncestorOfClass("Model")
Hàm này là một biến thể của Instance:FindFirstAncestor() which检查 the Object.ClassName property rather than Instance.Name . 1> Class.Instance:FindFirstAncestorWhichIsA()1> also exists, using the 4> Class.Object
Tham Số
Class.Object.className để tìm kiếm.
Lợi Nhuận
FindFirstAncestorWhichIsA
Trả lại tiền nhân đầu tiên của Instance cho người đó Object:IsA() trả lại cho các tên cấp cao đã được định.
Hàm này hoạt động lên trên, có nghĩa là nó bắt đầu tại ngay cảnh trực tiếp của ví dụ / trường hợp's và hoạt động lên <a href="/reference/engine/datamodel.md"> Class.DataModel</a>. Nếu không tìm thấy tổ tiên tương ứng, nó sẽ trả về nil.
Ngoài ra, Instance:FindFirstAncestorOfClass() , hàm này sử dụng Object:IsA() , tôn trọng kế thừa lớp. Ví dụ:
print(part:IsA("Part")) --> trueprint(part:IsA("BasePart")) --> trueprint(part:IsA("Instance")) --> true
Do đó, mẫu mã code sau đây sẽ trả về tiền nhân đầu tiên của BasePart, bất kể nó là một WedgePart , MeshPart hoặc 1> Class.Part1> .
local part = object:FindFirstAncestorWhichIsA("BasePart")
Xem thêm, Instance:FindFirstAncestor() .
Tham Số
Class.Object.className để tìm kiếm.
Lợi Nhuận
FindFirstChild
Làm trở lại con đầu tiên của Instance với tên đã được đặt,
hoặc nil nếu không có con cháu như vậy. Nếu động từ tùy chọn recursive được đúng, hàm này tìm tất cả các con cháu của Instance .
Kiểm tra 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 xác minh một con trẻ bằng cách sử dụng trượt dấu nhỏ là một lỗi nếu con trẻ không tồn tại.
-- Các lỗi dòng dưới đây xảy ra nếu Part không tồn tại trong Workspace:workspace.Part.Transparency = 0.5
Sử dụng FindFirstChild để kiểm tra trước tiên cho Phần, sau đó sử dụng các if-句 để thi hành mã cần thiết.
local part = workspace:FindFirstChild("Part")if part thenpart.Transparency = 0.5end
Tìm một đứa trẻ có tên trùng với một tính năng
Đôi khi Name của một đối tượng là cùng với điều kiện của một đối tượng Parent . Khi sử dụng dấu chấm dấu, các đối tượng có ưu tiên hơn trên trẻ em nếu chúng chia sẻ một cái tên.
Trong ví dụ sau đây, một Folder tên là "Màu" được thêm vào một Part , cũng có thuộc tính Part.Color. 1> Class.Part.Color1> đề cập đến Folder.
local part = Instance.new("Part")local folder = Instance.new("Folder")folder.Name = "Color"folder.Parent = partlocal c = part.Color --> Một Color3local c2 = part:FindFirstChild("Color") --> The Folder
Một lợi ích của việc sử dụng FindFirstChild() như thế này là việc giới thiệu các thuộc tính mới không gây ra nguy cơ cho mã của bạn.
Ghi chú hiệu suất
FindFirstChild() dài hơn gấp đến 20% so với dấu chấu câu và g
Tham Số
Các Instance.Name để tìm kiếm.
Dù nên thực hiện tìm kiếm hay không.
Lợi Nhuận
Mẫu mã
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
Trả lại con đầu tiên của Instance whose ClassName is equal to the given namespace.
Nếu không tìm thấy con cháu tương ứng, chức năng này trả về nil.
Class.Instance:FindFirstChildWhichIsA() chức năng này chỉ trả về các thống kê đối tượng mà class khớp với tên đã được định, bỏ qua hướng thừa hưởng lớp.
Những nhà phát triển tìm một đứa trẻ theo tên nên sử dụng Instance:FindFirstChild() thay vào đó.
Tham Số
Class.Object.className để tìm kiếm.
Lợi Nhuận
Mẫu mã
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
Trả lại con đầu tiên của Instance cho người đó Object:IsA() trả lại true cho kiểu tên đã được cho.
Nếu không tìm thấy con cháu tương ứng nào, chức năng này trả về nil. Nếu độ lặp tùy chọn là đúng, chức năng này tìm tất cả các con cháu của Instance .
Ngoài ra, Instance:FindFirstChildOfClass() , hàm này sử dụng Object:IsA() , tôn trọng kế thừa lớp. Ví dụ:
print(part:IsA("Part")) --> đúngprint(part:IsA("BasePart")) --> đúngprint(part:IsA("Instance")) --> true
Do đó, mẫu mã sau đây sẽ trả lại con cháu đầu tiên BasePart , bất kể nó là một WedgePart , MeshPart hoặc 1> Class.Part1> .
local part = object:FindFirstChildWhichIsA("BasePart")
Những nhà phát triển tìm một đứa trẻ theo tên, nên sử dụng Instance:FindFirstChild() thay vào đó.
Tham Số
Class.Object.className để tìm kiếm.
Dù nên thực hiện tìm kiếm hay không.
Lợi Nhuận
FindFirstDescendant
Trả lại con cháu đầu tiên được tìm thấy với Instance.Name đã được cung cấp.
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 <a href="https://developer.microsoft.com/en-us/microsoft-edge/microsoft-edge-first-dates">recursive\參數 trên <a href="https://developer.microsoft.com/vietnam/microsoft-edge/microsoft-edge-first-dates">Class.Instance:FindFirstChild()\ thay vào đ
Tham Số
Các Instance.Name để tìm kiếm.
Lợi Nhuận
GetActor
Nếu Instance là một Actor , thì Actor tự nó được trả lại. Nếu không, khả năng gần nhất của nó 1> Class.Actor1> được trả lại. Nếu khô
Lợi Nhuận
GetAttribute
Các biểu tượng này được tạo bởi các giá trị đã được gán cho tên đặc tính đã được gán. Nếu không có biểu tượng nào được gán, nil được trả lại.
Ví dụ, mảnh mã sau đây thiết lập và sau đó nhận giá trị của Position Xuất ban đầu đặc tính của instan:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Xem thêm
- Instance:SetAttribute() qui định thuộc tính với tên được cung cấp cho giá trị được cung cấp.
- Instance:GetAttributes() which returns a dictionary of key-value pairs for each of the ví dụ / trường hợp's attributes.
Tham Số
Tên của thuộc tính đang được lấy.
Lợi Nhuận
Giá trị đã được gán cho tên đặc tính đã được gán. Nếu không có tên đặc tính nào được gán, nil được trả lại.
GetAttributeChangedSignal
Hàm này trả về một sự kiện xảy ra chính xác như sự kiện Changed , ngoại trừ việc nó chỉ bắt đầu khi đặc tính được thay đổi; thực tế nó giống như GetPropertyChangedSignal() nhưng cho các đặc tính.
Nói chung, tốt nhất là sử dụng phương pháp này thay vì một kết nối đến Changed với một chức năng kiểm tra tên tính năng. Các gọi điện tiếp theo đến phương pháp này trên cùng một đối tượng với cùng một tên tính năng trả lại cùng một sự kiệ
Các ví dụ mã sau đây trả lại một tín hiệu khiến chức năng attributeChanged() hoạt động khi điều kiện Position xưởng ban đầu của bộ phận thay đổi:
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 which fires whenever any attribute is changed on the ví dụ / trường hợp.
Tham Số
Tên của thuộc tính được xác định mà tín hiệu thay đổi đang được trả lại.
Lợi Nhuận
Một sự kiện xảy ra khi thuộc tính đã được thay đổi.
GetAttributes
Các biểu tượng này được tạo bởi các cặp giá trị chìa khóa cho mỗi thuộc tính nơi mà chìa khóa là tên của tính tối và giá trị là một giá trị không phải là nil .
Ví dụ, mảnh code sau đây thuộc tính và giá trị của một ví dụ / trường hợp:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(name .. " = " .. value)end
Xem thêm Instance:GetAttribute() which returns the value that has been assigned to the given attribute name.
Lợi Nhuận
Một từ điển dòng → cặp biến thể cho mỗi thuộc tính nơi chuỗi là tên của thuộc tính và biến thể là một giá trị không phải là nil.
GetChildren
Đảm bảo một table (một bảng được lưu trữ tốt) chứa tất cả con cháu của instância, hoặc mọi Instance có cha là Parent của nó bằng cách sử dụng bất kỳ for-ルーp nào. Table có thể được lặp lại một lần nào đó bằng cách sử dụ
-- Ví dụ for-oop numberlocal children = workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
-- Ví dụ vòng lặp chunglocal children = workspace:GetChildren()for i, child in children doprint(child.Name .. " is child number " .. i)end
Trẻ em được sắp xếp theo thứ tự mà đặt định Parent tính năng của họ vào đối tượng.
Xem thêm chức năng GetDescendants .
Lợi Nhuận
Một mat阵 chứa con của ví dụ / trường hợp.
Mẫu mã
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
Trả lại một chuỗi dữ liệu đã mã hóa của ID debug được sử dụng bên trong bởi Roblox.
Ghi chú:
- Mục này đã được bảo vệ. Cố gắng sử dụng nó trong một Script hoặc LocalScript sẽ gây ra một lỗi
- Một ID debug là một ID được sử dụng trong các quá trình debug. Nó cho phép một người debug đọc mỗi hướng dẫn trước khi một ứng dụng xử lý nó. Tất cả các đối tượng trong Roblox đều tương tự như các hướng dẫn (hoặc "mã") để được debug nếu cần thiết
- Điều này có thể hữu ích cho các plugin cần phải phân biệt các đối tượng tương tự nhau (như các đối tượng chia sẻ cùng một cái tên)
Tham Số
Độ dài của khoảng cách.
Lợi Nhuận
chuỗiID Debug.
Mẫu mã
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
Phương thức này trả lại một mat阵 chứa tất cả các con cháu của đối tượng đó. Giống như Instance:GetChildren() , nó chỉ trả lại những con cháu ngay lập tức của một đối tượng, nhưng nó tìm thấy mọi con cháu của đối tượng, mọi con cháu của những con cháu đó v
Lợi Nhuận
Một mat阵 chứa con cháu của instância.
Mẫu mã
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
Trả lại một chuỗi mô tả nguồn gốc của instância. Chuỗi là một chuỗi của Name của đối tượng và các tiền nhân của nó, được phân c
Khi gọi một Instance đó không phải là con của DataModel, hàm này xem xét tất cả các tổ tiên lên đến và bao gồm cả người cha đẻ trên cùng mà không có Parent.
Hàm này hữu ích cho việc theo dõi và truyền dữ liệu. Bạn không nên cố gắng để phân tích chuỗi đã được trả lại cho bất kỳ mục đích hữu ích nào; hàm này không thoát các kỳ hiệu (hoặc bất kỳ biểu tượng nào khác) trong tên người. Trong những lời khác, mặc d
Lợi Nhuận
Mẫu mã
-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire
local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera
GetTags
Phương thức này trả về một loạt các thẻ được áp dụng cho một instâne nhất định, như các chuỗi. Bạn có thể thêm các thẻ bằng cách thêm Class.Instance:AddTag()|AddTag() hoặc bằng cách chạy Class.Instance:AddTag()|AddTag() .
Phương pháp này hữu ích khi bạn muốn làm điều gì đó với nhiều nhãn trên một instan
Lợi Nhuận
HasTag
Phương thức này trả lại true nếu nhãn đã được thêm vào đối tượng. Bạn có thể thêm nhãn bằng cách thêm vào Studio ở cửa sổ Thông tin hữu tuyến hoặc ở thời điểm thực thi với AddTag().
Tham Số
Lợi Nhuận
IsAncestorOf
Trả về true nếu một Instance là tổ tiên của người con cháu được cho.
Một Instance được xem là tổ tiên của một đối tượng nếu Instance.Parent hoặc một trong những người cha của nó được cài đặt trên Instance.Parent .
Xem thêm, Instance:IsDescendantOf() .
Tham Số
Lợi Nhuận
Mẫu mã
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
Trả về true nếu một Instance là con cháu của người tiền nhiễm đã được cho.
Một Instance được xem là con của một đối tượng nếu cha hoặc một trong những cha của nó được cài đặt trên đối tượng.
Lưu ý, DataModel là một dòng dựng của nil. Điều này có nghĩa là IsDescendantOf không thể được sử dụng với một biến của nil để kiểm tra xem một đối tượng đã bị xóa.
Xem thêm, Instance:IsAncestorOf() .
Tham Số
Lợi Nhuận
Mẫu mã
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
Phương pháp này xóa một thẻ khỏi một ví dụ / trường hợp. Nó sẽ không thả một lỗi nếu object không có thẻ. Thành côngfully xóa một thẻ sẽ kích hoạt một tín hiệu được tạo bởi CollectionService:GetInstanceRemovedSignal() với thẻ đã được cung cấp.
Lưu ý rằng khi gắn ví dụ / trường hợpmột instan, thông thường có một số tài nguyên được sử dụng để cung cấp chức năng cho nhãn, chẳng hạn như kết nối sự kiện hoặc bảng. Để ngăn chặn lỗi bộ nhớ, tốt nhất là làm sạch những thứ này (đăng nhập, thiết
Tham Số
Lợi Nhuận
SetAttribute
Các biểu tượng được đặt tên cho đến giá trị được cung cấp. Nếu giá trị được cung cấp là nil , thì biểu tượng sẽ được xóa, vì nil được trả về mặc định.
Ví dụ, mảnh code sau đây thiết lập đặc tính InitialPosition của instância để Vector3.new(0, 10, 0) :
local part = workspace.Partpart:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Giới hạn
Yêu cầu và hạn chế đặt tên:
- Tên chỉ được sử dụng các ký tự alfanumeric và dấu chấm câu.
- Không được phép sử dụng các không gian hoặc biểu tượng độc nhất.
- Dãy chuỗi phải dưới 100 ký tự hoặc ít hơn.
- Tên không được phép bắt đầu với RBX trừ khi người nói chuyện là một script核 của Roblox (được dành cho Roblox).
Khi cố gắng đặt một đặc tính vào một đánh máykhông hỗ trợ, một lỗi sẽ được ném.
Xem thêm:
- Instance:GetAttribute() which returns the value that has been assigned to the given attribute name.
- Instance:GetAttributes() which returns a dictionary of key-value pairs for each of the ví dụ / trường hợp's attributes.
Tham Số
Tên của đặc tính được cài đặt.
Giá trị để đặt thuộc tính được xác định.
Lợi Nhuận
WaitForChild
Trả lại con của Class.Instance với tên đã được định. Nếu con của Class.Instance không tồn tại, nó sẽ tạo ra một luồng chủ động cho đến khi nó tồn tại. Nếu được định Instance tham số, thì phương thức này sẽ hết hạn sau số giây đư
Sử dụng chính
WaitForChild() rất quan trọng khi làm việc với mã được thiết lập bởi client trong một LocalScript
Ghi chú
- Hàm này không được trả kết quả nếu một đứa trẻ có tên đã được đặt khi gọi.
- Instance:FindFirstChild() là một lựa chọn hiệu quả hơn cho WaitForChild() đối với những đối tượng được cho rằng tồn tại.
- Nếu một cuộc gọi đến phương thức này vượt quá 5 giây mà không được trả lại, và không có độ timeOut được quy định, một cảnh báo sẽ được in ra trên kết quả mà thương mục có thể tạo ra mãi mãi.
Tham Số
Các Instance.Name để tìm kiếm.
Một biến thời gian bắt buộc.
Lợi Nhuận
Mẫu mã
local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")
Sự Kiện
AncestryChanged
Lửa khi đặt tính Instance.Parent của đối tượng hoặc một trong những tiền nhân của nó.
Sự kiện này bao gồm hai tham số, con và cha. con tham khảo đến 1> Class.Instance1> whose 4> Class.Instance.Parent4> đã thực sự được thay đổi. 7> cha7> tham khảo đ
Bạn có thể sử dụng sự kiện này để theo dõi việc xóa một instan trong Studio, chẳng hạn như việc xóa thủ công trong Trình phát hoặc qua một plugin. Nếu bạn cần phải phát hiện khi một instan bị xóa bằng cách sử dụng Instance:Destroy(), hãy sử dụng sự kiện
Tham Số
Class.Instance có điều kiện Instance.Parent đã được thay đổi.
Người anh em mới của Instance.Parent của Instance whose Instance.Parent has been changed.
Mẫu mã
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 đầu khi bất kỳ thuộc tính nào được thay đổi trên ví dụ / trường hợp, bao gồm khi một thuộc tính được đặt trên nil . Tên của thuộc tính đã được truyền cho chức năng kết nối.
Ví dụ, mảnh code sau đây kết nối chức năng attributeChanged() để bắn khi một trong những đặc tính của một trong những bộ phận thay đổi:
local part = workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)
Xem thêm Instance:GetAttributeChangedSignal() which returns an event that fires when a specific given attribute changes.
Tham Số
Tên của đặc tính đã được thay đổi.
ChildAdded
Lửa sau khi một đối tượng được phụ huynh cho đối tượng này Instance .
Lưu ý, khi sử dụng chức năng này trên một client để phát hiện các thống kê đối tượng đã được tạo bởi máy chủ nó là cần thiết để sử dụng Instance:WaitForChild() khi index các thống kê đối tượng con của nó. Điều này là do đối tượng và con cái củ
workspace.ChildAdded:Connect(function(child)
-- need to use WaitForChild as descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)
Ghi chú, chức năng này chỉ hoạt động cho trẻ em 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ố
Mẫu mã
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 sau khi một đứa trẻ được loại bỏ khỏi Instance này.
Đã bị xóa tham khảo đến khi cha mẹ của một đối tượng được thay đổi từ này Instance này sang bất cứ thứ gì khác ngoài này Instance . Hãy lưu ý rằng sự kiện này sẽ cũng bắt lửa khi một đứa tr�
Hàm này chỉ hoạt động cho những đứa con ngay lập tức của Instance . Đối với một hàm đã bắt tất cả các con cháu, hãy sử dụng Instance.DescendantRemoving .
Xem thêm Instance.ChildAdded .
Tham Số
Class.Instance đã bị xóa.
Mẫu mã
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 DescendantAdded sẽ bắt đầu sau khi một con cháu được thêm vào Instance .
Khi thêm các lửa con cháu cho mỗi con cháu, việc cha mẹ kết nối một đối tượng với Instance sẽ khiến sự kiện này khiến cho đối tượng này và tất cả những con cháu của nó một cách riêng lẻ.
Các nhà phát triển chỉ quan tâm đến những đứa trẻ ngay lập tức của Instance nên sử dụng Instance.ChildAdded thay vào đó.
Xem thêm Instance.DescendantRemoving .
Tham Số
Mẫu mã
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 kích hoạt ngay lập tức trước khi cha mẹ Instance thay đổi như vậy một môn đệ instan sẽ không còn là một 1> mô
Vì sự kiện này bắt đầu trước khi thoát của con cháu, cha của con cháu sẽ không thay đổi vào thời điểm này khi thoát của cha. Nếu con cháu cũng là một trẻ con trực tiếp của cha , sự kiện này sẽ bắt đầu trước Class.Instance.
Nếu một con cháu có con, sự kiện này sẽ bắt đầu với con cháu đầu tiên, được theo sau bởi con cháu của nó.
Cảnh báo
Sự kiện này bắt đầu với đối tượng con cháu đang được xóa. Cố gắng đặt Parent của con cháu vào một cái gì đó khác sẽ thất bại. Dưới đây là một ví dụ cho thấy điều này:
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ố
Class.Instance đang bị xóa.
Mẫu mã
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
Các Instance sẽ không bao giờ được xóa khỏi bộ nhớ khi một chức năng kết nối vẫn đang sử dụng nó. Tuy nhiên, nếu chức năng này được gọi ở bất kỳ điểm nào, thì Instance và con cháu của nó sẽ được gọi là nil</
Nếu đặt Workspace.SignalBehavior tính năng lên Enum.SignalBehavior.Immediate, sự kiện này sẽ ngay lập tức khiến cho sự kiện Instance hoặc một trong những tiền nhân của nó bị tiêu diệt với 2>Class.Instance:Destroy2> .
Nếu thuộc tính Workspace.SignalBehavior được đặt thành Enum.SignalBehavior.Deferred, sự kiện này sẽ kích hoạt tại điểm tổng kết tiếp theo, which sẽ được sau khi Instance hoặc một trong những tiền nhân của nó được ti
Với hành vi Deferred, kết nối một script với sự kiện Instance.Destroying của riêng mình là vấn đề, vì script sẽ bị xóa trước khi hồi gọi có thể được gọi (ý nghĩa là nó sẽ không thể thi hành).
Khi xóa một Instance ở Studio, chẳng hạn như việc xóa thủ công qua Explorer hoặc qua một plugin, Instance không bị xóa. Thay vào đó, cha mẹ được đặt thành 1> nil1>
Mẫu mã
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())