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

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

Thuộc Tính

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

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

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.

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

    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

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

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

property: string

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ã

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

IsA

Ghi Song Song

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ố

className: string

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ã

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

property: string

Tên của thuộc tính đã thay đổi.


Mẫu mã

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