Object

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 Sao Chép

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

Thuộc Tính

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

    Một chuỗi chỉ đọc đại diện cho lớp mà Object thuộc về.

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.

  • IsA(className : string):boolean
    Ghi Song Song

    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

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

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() do
if child.ClassName == "Part" then
print("Found a Part")
-- will find Parts in model, but NOT TrussParts, WedgeParts, etc
end
end

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ư IntValueStringValue , 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ố

property: string

Thuộc tính để kết nối.

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

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.

Old-to-New Values with Changed

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.

Changed and 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")
Ghi Song Song

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 typetypeof .

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ố

className: string

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.

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

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.

Instance:IsA()

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ư IntValueStringValue, 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ố

property: string

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.

Changed Event

-- 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.

Change Detector

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