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.
Objet là lớp cơ bản cho tất cả các lớp trong hiệp thông số lớp Roblox. Mọi lớp khác mà Roblox engine định nghĩa 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 khi một trong những thuộc tính của đối tượng thay đổi.
Trả lại true nếu một đối tượng thuộc hạ nhận hoặc thừa hưởng từ một đối tượng nào đó.
Sự Kiện
Bắt lửa ngay sau khi thay đổi tính chất của một đối tượng, với một số hạn chế.
Thuộc Tính
ClassName
Một chuỗi đọc chỉ đại diện cho lớp này Object thuộc về.
Thuộc tính này có thể được sử dụng với các chức năng khác được sử dụng để xác định các đối tượng bằng đánh máy, chẳng hạn như Object:IsA() hoặc Instance:FindFirstChildOfClass() .
Ghi chú thuộc tính này chỉ đọc và không thể được thay đổi bởi các script. Các nhà phát triển muốn thay đổi lớp của một đối tượng sẽ thay vào đó một Object mới.
Ngoài ra, Object:IsA() , ClassName có thể được sử dụng để kiểm tra xem một đối tượng thuộc về một lớp cụ thể bỏ qua kế thừa lớp. 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 thức này trả lại 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 tên thuộc tính thay đổi. Nó là một lý tưởng tốt để sử dụng phương thức
Class.ValueBase đối tượng, chẳng hạn như IntValue và StringValue, sử dụng một sự kiện 0> Class.Object.Changed|Changed0> đã kích hoạt với nội dung của họ ValueBase3> th
Ghi chú rằng sự kiện này sẽ không đưa bất kỳ lý do nào đến một 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 script.
Giới hạn
Sự kiện được trả lại bởi phương thức này
Ngoài ra, sự kiện đã được trả lại có thể không bắt lửa trên mọi thay đổ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 này tất cả. Nó được khuyến nghị rằng bạn thử cẩn thận cho những thay đổi của các thuộc tính ảnh hưởng đế
Tham Số
Thuộc tính để kết nối.
Lợi Nhuận
Một tín hiệu được tạo ra khi tình trạng thay đổi.
Mẫu mã
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")
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 đối tượng là tương đương với hoặc một subclass của một đối tượng nào đó. Đây là
Phổ biến nhất, chức năng này được sử dụng để kiểm tra nếu một đối tượng là một lo
local function paintFigure(character, color)
-- Lặp lại trên các con của mục đối tượng nhân vật
for _, child in character:GetChildren() do
-- Lọc các đối tượng không phải là bộ phận, ví dụ như áo, quần và hình người
-- R15 sử dụng MeshPart và R6 sử dụng Part, vì vậy chúng tôi sử dụng BasePart để phát hiện cả hai:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(game.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. Case-sensitive.
Lợi Nhuận
Mô tả có phù hợp hay không giữa lớp của đối tượng với lớp đã được cung cấp.
Mẫu mã
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 ngay lập tức khi một thuộc tính đối tượng được thay đổi và nó hoạt động với hầu hết các trường hợp sử dụng (xem giới hạn bên dưới). Giá trị mới của một thuộc tính đã thay đổi là không được truy cập bằng cách sử dụng
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 sự thay đổi của một thuộc tính cụ thể, hãy xem xét sử dụng phương thức GetPropertyChangedSignal() thay vào đó.
Đối với ValueBase đối tượng như IntValue và StringValue, sự kiện này chỉ kích hoạt khi đổi tính 1> Value1> của đối tượng. Để
Giới hạn
Sự kiện này không phải là lửa cho các thay đổi liên qu
Ngoài ra, sự kiện này có thể không bắt lửa trên mọi thay đổ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 này tất cả. Nó được khuyến nghị rằng bạn thử cẩn thận cho những thay đổi của các thuộc tính ảnh hưởng đến game logic.
Tham Số
Tên của thuộc tính đã thay đổi.
Mẫu mã
-- 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"
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