Sự kiện

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

Các sự kiện là những sự kiện xảy ra trong trải nghiệm của bạn mà bạn có thể lắng nghe và phản hồi. Nhiều dịch vụ và thiết bị Roblox đã tích hợp các sự kiện tích hợp để tự động bắt lửa trong phản ứng đáp lại các hành động hoặc thay đổi cụ thể.

Ví dụ, một người chơi của Character đang chạm vào một BasePart đã tự động kích hoạt một sự kiện Touched. Mỗi lần một người chơi tham gia vào trải nghi

Do số lượng các sự kiện và kiến ​​trúc client-server, Roblox scripting thường được gọi là event-driven . Phương pháp này khác với nhiều engine game khác, which emphasize running code on a frame-by-frame basis.

Bạn không cần phải lắng nghe các sự kiện hoặc thực hiện bất kỳ hành động nào để phản ứng với chúng, nhưng các sự kiện đang diễn ra và hiện hữu dù vậy. Khi bạn muốn phản ứng với một sự kiện, bạn kết nối một chức năng với nó.

Kết Nối Chức Năng với Sự Kiện

Bạn kết nối một chức năng vào một sự kiện bằng cách sử dụng Connect() để thi đoạn mã mỗi khi sự kiện kích hoạt. Hầu hết các s

Mẫu mã code sau đây cho thấy cách kết nối một chức năng tên là onPartTouched() với sự kiện Touched của một phần:


-- Đoán rằng tập tin đó được gắn với phần
local part = script.Parent
-- Chức năng bạn muốn chạy
local function onPartTouched(object)
print("Part was touched by", object:GetFullName())
end
-- Kết nối chức năng với sự kiện Chạm của bộ phận
part.Touched:Connect(onPartTouched)

Bạn cũng có thể kết nối các chức năng an toàn với các sự kiện khi bạn muốn sử dụng biến ở phạm vi cha và không cần phải sử dụng chức năng ở nơi khác. Ví dụ, mẫu mã này tránh được hàm trung gian khó chịu từ mẫu tương tự ở Dị


local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
local function saveProgress(character)
local position = character:FindFirstChild("HumanoidRootPart").Position
SaveManager.saveData(character, position)
end
-- Hành động an toàn khi gọi saveProgress() khi một nhân vật được xóa
-- từ kinh nghiệm (trong trường hợp này, khi người chơi rời đi).
Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(saveProgress)
end)

Huỷ kết nối các chức năng từ sự kiện

Phương thức Connect() trả lại một RBXScriptConnection đối tượng. Nếu bạn kết nối một chức năng với một sự kiện, nhưng k

Mẫu mã code sau đây cho thấy cách kết nối và huỷ kết nối một chức năng từ sự kiện Part.Touched :


local part = workspace.Part
local targetPart = workspace.TargetPart
-- Tuyên bố một biến đại diện trống cho kết nối
local connection
local function onPartTouched(otherPart)
if otherPart == targetPart then
print("The part hit the target!")
-- Mất kết nối kết nối
connection:Disconnect()
end
end
-- Kết nối chức năng trên đến sự kiện Đã chạm
connection = part.Touched:Connect(onPartTouched)

Nếu bạn chỉ muốn kết nối một chức năng với một sự kiện một lần - đó là, chỉ chạy chức năng lần đầu tiên sự kiện bắt lửa - sử dụng phương thức Once() như một phương thức tiện lợi hơn để kết nối và thoát khỏi chức năng.

Đang đợi sự kiện bắt lửa

Nếu bạn muốn một script để tạo ra cho đến một sự kiện cụ thể nào đó khi nó bắt đầu, hãy sử dụng phương thức Wait() này. Phương thức này trả lại các argument của sự kiện, mà bạn có thể giao cho các biến cho sử dụng sau:


local part = workspace.Part
local touchedPart = part.Touched:Wait()
print("The part was touched by", touchedPart:GetFullName())

Các loại sự kiện khác

  • Sự kiểm tra liên kết

    Các sự kiện có thể kết nối cho phép bạn truyền thông tin giữa các script trên cùng một bên của giới hạn client-server.

  • Sự kiệnRemote

    Sự kiện xa cho phép bạn truyền thông điệu qua giới hạn client-server.