Object
*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.
Vật là lớp cơ sở cho tất cả các lớp trong cấu trúc lớp Roblox.Mọi lớp khác mà Roblox Engine xác định sẽ thừa hưởng tất cả các thành viên của Object.Không thể tạo trực tiếp Object.
Tóm Tắt
Phương Pháp
Nhận một sự kiện bắt lửa khi một tính năng của đối tượng thay đổi.
Trả về true nếu lớp của một đối tượng phù hợp hoặc thừa kế từ một lớp đã cho.
Sự Kiện
Bị sa thả ngay lập tức sau khi một thuộc tính của đối tượng thay đổi, với một số hạn chế.
Thuộc Tính
ClassName
Một chuỗi chỉ đọc đại diện cho lớp mà Object thuộc về.
Tính năng này có thể được sử dụng với các chức năng khác nhau được sử dụng để xác định các đối tượng theo đánh máy, chẳng hạn như Object:IsA() hoặc Instance:FindFirstChildOfClass().
Lưu ý thuộc tính này chỉ đọc và không thể được thay đổi bởi các kịch bản.Các nhà phát triển muốn thay đổi lớp của một đối tượng sẽ phải tạo một lớp mới Object.
Không giống như Object:IsA(), ClassName có thể được sử dụng để kiểm tra xem một đối tượng có thuộc về một lớp cụ thể bỏ qua sự kế thừa lớp không. Ví dụ:
for _, child in workspace:GetChildren() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
Phương Pháp
GetPropertyChangedSignal
Phương pháp này trả về một sự kiện có hành vi tương tự như sự kiện Changed, ngoại trừ việc nó chỉ bắn khi thay đổi thuộc tính đã cho.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 tài sản.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.
ValueBase các đối tượng, chẳng hạn như IntValue và StringValue , sử dụng một sự kiện đã được sửa đổi Changed với nội dung của đặc tính Value của họ.Do đó, phương pháp này cung cấp một cách để phát hiện các thay đổi trong các tính năng khác của các đối tượng đó.
Lưu ý rằng sự kiện này sẽ không truyền bất kỳ tham số nào đến chức năng kết nối, vì vậy giá trị của thuộc tính đã thay đổi phải được đọc trực tiếp trong một kịch bản.
Hạn chế
Sự kiện trả về bởi phương pháp này không không bắt lửa cho các thay đổi liên quan đến vật lý, chẳng hạn như khi , > , , , hoặc tính chất của một thay đổi do trọng lực.Để phát hiện các thay đổi trong các thuộc tính này, hãy xem xét sử dụng sự kiện dựa trên vật lý như RunService.PreSimulation .
Ngoài ra, sự kiện trả về có thể không bắt lửa trên mỗi sửa đổi của các thuộc tính thay đổi rất thường xuyên, và/hoặc nó có thể không bắt lửa cho các thuộc tính như tất cả.Khuyến nghị bạn cẩn thận kiểm tra các thay đổi chỉ số ảnh hưởng đến logic trò chơi.
Tham Số
Thuộc tính để kết nối.
Lợi Nhuận
Một tín hiệu bắn ra bất cứ khi nào thuộc tính thay đổi.
Mẫu mã
This code sample demonstrates how to save a value before a changed event fires on it in order to get more information about a change.
local part = Instance.new("Part")
local currentColor = part.BrickColor
local function onBrickColorChanged()
local newColor = part.BrickColor
print("Color changed from", currentColor.Name, "to", newColor.Name)
currentColor = newColor
end
part:GetPropertyChangedSignal("BrickColor"):Connect(onBrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Really blue")
This code sample demonstrates the equivalence of the Changed event and event returned by GetPropertyChangedSignal.
local part = Instance.new("Part")
local function onBrickColorChanged()
print("My color is now " .. part.BrickColor.Name)
end
local function onChanged(property)
if property == "BrickColor" then
onBrickColorChanged()
end
end
part:GetPropertyChangedSignal("BrickColor"):Connect(onBrickColorChanged)
part.Changed:Connect(onChanged)
-- Trigger some changes (because we connected twice,
-- both of these will cause two calls to onBrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Institutional white")
IsA
IsA trả về true nếu lớp của đối tượng tương đương với hoặc một lớp con của một lớp cụ thể.Chức năng này tương tự với các đối tượng instanceof trong các ngôn ngữ khác, và là một dạng kiểm tra loại .Để bỏ qua sự thừa hưởng lớp, kiểm tra trực tiếp thuộc tính ClassName thay vào đó.Đối với kiểm tra các loại dữ liệu Luau bản địa (số, chuỗi, v.v.) sử dụng các chức năng type và typeof .
Phổ biến nhất, chức năng này được sử dụng để kiểm tra xem một đối tượng có phải là một phần nào đó hay không, chẳng hạn như Part hoặc WedgePart, được thừa hưởng từ BasePart (một lớp trừu tượng).Ví dụ, nếu mục tiêu của bạn là thay đổi tất cả các chi của một nhân vật thành cùng một màu, bạn có thể sử dụng GetChildren để lặp lại các con trẻ, sau đó sử dụng IsA để lọc các đối tượng không có BasePart tính chất BrickColor :
local Players = game:GetService("Players")
local function paintFigure(character, color)
-- Lặp lại trên các đối tượng con của nhân vật
for _, child in character:GetChildren() do
-- Lọc các đối tượng không phải là phần, chẳng hạn như Áo, Quần và Humanoid
-- R15 sử dụng MeshPart và R6 sử dụng Phần, vì vậy chúng tôi sử dụng BasePart ở đây để phát hiện cả hai:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))
Vì tất cả các lớp đều thừa hưởng từ Object, gọi object:IsA("Object") sẽ luôn trả về true.
Tham Số
Lớp mà lớp của Đối tượng sẽ được kiểm tra. Lớp nhạy cảm với chữ hoa.
Lợi Nhuận
Mô tả xem lớp của Đối tượng phù hợp hay là một lớp con của lớp đã cho.
Mẫu mã
Demonstrates determining the class of Workspace using Instance:IsA()
Workspace is of class 'Workspace', so the first statement is true. Workspace is not of class 'BasePart', so the second statement is false. Workspace inherits from Instance and therefore is of class 'Instance', so the third statement is true.
local Workspace = game:GetService("Workspace")
print(Workspace:IsA("Workspace")) -- true
print(Workspace:IsA("BasePart")) -- false
print(Workspace:IsA("Instance")) -- true
Sự Kiện
Changed
Sự kiện này bắt lửa ngay lập tức sau khi thay đổi tính chất của một đối tượng và nó hoạt động với hầu hết các trường hợp sử dụng (xem hạn chế bên dưới).Giá trị mới của một thuộc tính đã thay đổi là không được truyền đến như một tham số, vì vậy phải truy cập bằng cách sử dụng object[property] .Ví dụ:
object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)
Nếu bạn chỉ quan tâm đến việc lắng nghe thay đổi của một thuộc tính cụ thể, hãy xem xét sử dụng phương pháp GetPropertyChangedSignal() thay thế.
Đối với ValueBase đối tượng như IntValue và StringValue, sự kiện này chỉ bắt lửa khi thuộc tính của đối tượng thay đổi Value.Để phát hiện các thay đổi khác trong ValueBase đối tượng, hãy sử dụng GetPropertyChangedSignal() thay thế.
Hạn chế
Sự kiện này không không bắt lửa cho các thay đổi liên quan đến vật lý, chẳng hạn như khi , , , , hoặc tính chất của một thay đổi do trọng lực.Để phát hiện các thay đổi trong các thuộc tính này, hãy xem xét sử dụng sự kiện dựa trên vật lý như RunService.PreSimulation .
Ngoài ra, sự kiện này có thể không bắt lửa trên mỗi sửa đổi của các thuộc tính thay đổi rất thường xuyên, và/hoặc nó có thể không bắt lửa cho các thuộc tính như tất cả.Khuyến nghị bạn cẩn thận kiểm tra các thay đổi chỉ số ảnh hưởng đến logic trò chơi.
Tham Số
Tên của thuộc tính đã thay đổi.
Mẫu mã
This sample demonstrates the subtleties of the Changed event on normal objects and "-Value" objects.
-- Demonstrate the Changed event by creating a Part
local part = Instance.new("Part")
part.Changed:Connect(print)
-- This fires Changed with "Transparency"
part.Transparency = 0.5
-- Similarly, this fires Changed with "Number"
part.Name = "SomePart"
-- Since changing BrickColor will also change other
-- properties at the same time, this line fires Changed
-- with "BrickColor", "Color3" and "Color3uint16".
part.BrickColor = BrickColor.Red()
-- A NumberValue holds a double-precision floating-point number
local vNumber = Instance.new("NumberValue")
vNumber.Changed:Connect(print)
-- This fires Changed with 123.456 (not "Value")
vNumber.Value = 123.456
-- This does not fire Changed
vNumber.Name = "SomeNumber"
-- A StringValue stores one string
local vString = Instance.new("StringValue")
vString.Changed:Connect(print)
-- This fires Changed with "Hello" (not "Value")
vString.Value = "Hello"
This code sample demonstrates the Changed event firing within a parent object.
local object = script.Parent
local function onChanged(property)
-- Get the current value of the property
local value = object[property]
-- Print a message saying what changed
print(object:GetFullName() .. "." .. property .. " (" .. typeof(value) .. ") changed to " .. tostring(value))
end
object.Changed:Connect(onChanged)
-- Trigger a simple change in the object (add an underscore to the name)
object.Name = "_" .. object.Name