เหตุการณ์

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

เหตุการณ์เป็นเหตุการณ์ภายในเกมของคุณที่คุณสามารถฟังและตอบสนองได้ บริการและวัตถุหลายตัวใน Roblox มีเหตุการณ์ในตัวที่ เกิดขึ้น โดยอัตโนมัติในการตอบสนองต่อการกระทำหรือการเปลี่ยนแปลงเฉพาะ

ตัวอย่างเช่น Character ของผู้เล่นที่สัมผัสกับ BasePart จะทำให้เกิดเหตุการณ์ Touched โดยอัตโนมัติ ทุกครั้งที่ผู้เล่นเข้าร่วมเกมของคุณ เหตุการณ์ Players.PlayerAdded จะเกิดขึ้น

เนื่องจากจำนวนเหตุการณ์ที่มีมากและสถาปัตยกรรมลูกค้า-เซิร์ฟเวอร์ การเขียนสคริปต์ใน Roblox มักจะเรียกว่า ขับเคลื่อนด้วยเหตุการณ์ แนวทางนี้แตกต่างจากเกมเอนจิ้นอื่น ๆ หลายตัวที่เน้นการรันโค้ดแบบเฟรมต่อเฟรม

คุณไม่จำเป็นต้องฟังเหตุการณ์หรือดำเนินการใด ๆ ในการตอบสนองต่อพวกเขา แต่เหตุการณ์ก็ยังเกิดขึ้นและมีให้ใช้งาน เมื่อคุณต้องการตอบสนองต่อเหตุการณ์ คุณต้องเชื่อมต่อฟังก์ชันกับมัน

เชื่อมต่อฟังก์ชันกับเหตุการณ์

คุณเชื่อมต่อฟังก์ชันกับเหตุการณ์โดยใช้ Connect() เพื่อดำเนินโค้ดทุกครั้งที่เหตุการณ์เกิดขึ้น เหตุการณ์ส่วนใหญ่จะส่งพารามิเตอร์ไปยังฟังก์ชันที่เชื่อมต่อ สำหรับตัวอย่าง เหตุการณ์ BasePart.Touched จะส่งวัตถุที่สัมผัสกับส่วน (เช่นมือซ้ายหรือล้อรถยนต์) และเหตุการณ์ Players.PlayerAdded จะส่ง Player ที่เข้าร่วมเกมของคุณ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเชื่อมต่อฟังก์ชันชื่อ onPartTouched() กับเหตุการณ์ Touched ของส่วน:


-- สมมติว่ากำลังทำงานในส่วน
local part = script.Parent
-- ฟังก์ชันที่คุณต้องการให้ทำงาน
local function onPartTouched(object)
print("ส่วนถูกสัมผัสโดย", object:GetFullName())
end
-- เชื่อมต่อฟังก์ชันกับเหตุการณ์ Touched ของส่วน
part.Touched:Connect(onPartTouched)

คุณยังสามารถเชื่อมต่อ ฟังก์ชันนิรนาม กับเหตุการณ์เมื่อคุณต้องการใช้ตัวแปรในขอบเขตของผู้ปกครองและไม่จำเป็นต้องใช้ฟังก์ชันในที่อื่น ตัวอย่างนี้หลีกเลี่ยงฟังก์ชันกลางที่ไม่ค่อยดีจากตัวอย่างที่คล้ายกันใน บริการ:


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
-- ฟังก์ชันนิรนามที่เรียก saveProgress() เมื่อมีการลบตัวละครออกจากเกม (ในกรณีนี้ เมื่อผู้เล่นออก)
Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(saveProgress)
end)

ตัดการเชื่อมต่อฟังก์ชันจากเหตุการณ์

วิธี Connect() จะคืนค่าตัวเชื่อม RBXScriptConnection หากคุณเชื่อมต่อฟังก์ชันกับเหตุการณ์ แต่ไม่ต้องการเรียกฟังก์ชันเมื่อเหตุการณ์ถัดไปเกิดขึ้น (เช่นหลังจากที่ตรงตามเงื่อนไขบางประการ) ให้ตัดการเชื่อมต่อโดยการเรียก Disconnect() บนวัตถุ RBXScriptConnection

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเชื่อมต่อและตัดการเชื่อมต่อฟังก์ชันจากเหตุการณ์ Part.Touched:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local targetPart = Workspace.TargetPart
-- ประกาศตัวแปรว่างสำหรับการเชื่อมต่อ
local connection
local function onPartTouched(otherPart)
if otherPart == targetPart then
print("ส่วนถูกตีที่เป้าหมาย!")
-- ตัดการเชื่อมต่อ
connection:Disconnect()
end
end
-- เชื่อมต่อฟังก์ชันข้างบนกับเหตุการณ์ Touched
connection = part.Touched:Connect(onPartTouched)

รอให้เหตุการณ์เกิดขึ้น

หากคุณต้องการให้สคริปต์หยุดรอจนกว่าเหตุการณ์เฉพาะจะเกิดขึ้น ใช้ Wait() วิธีนี้จะคืนค่าพารามิเตอร์ของเหตุการณ์ซึ่งคุณสามารถกำหนดให้กับตัวแปรเพื่อการใช้งานในภายหลัง:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local touchedPart = part.Touched:Wait()
print("ส่วนถูกสัมผัสโดย", touchedPart:GetFullName())

ประเภทอื่นของเหตุการณ์

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ