Evenementen

*Deze inhoud is vertaald met behulp van AI (bèta) en kan fouten bevatten. Klik hier om deze pagina in het Engels te bekijken.

Evenementen zijn gebeurtenissen binnen je spel waar je naar kunt luisteren en op kunt reageren. Veel Roblox-services en objecten hebben ingebouwde evenementen die automatisch afgaan als reactie op specifieke acties of veranderingen.

Bijvoorbeeld, het aanraken van een Character door een BasePart activeert automatisch een Touched evenement. Elke keer dat een speler je spel betreedt, wordt het Players.PlayerAdded evenement geactiveerd.

Vanwege het enorme aantal evenementen en de client-serverarchitectuur wordt Roblox-scripting vaak aangeduid als evenementgestuurd. Deze benadering verschilt van veel andere game-engines, die de nadruk leggen op het uitvoeren van code op basis van frames.

Je hoeft niet naar evenementen te luisteren of actie te ondernemen als reactie daarop, maar de evenementen worden toch geactiveerd en zijn beschikbaar. Wanneer je wel wilt reageren op een evenement, verbind je een functie eraan.

Verbind functies met evenementen

Je verbindt een functie met een evenement met behulp van Connect() om code uit te voeren elke keer dat het evenement afgaat. De meeste evenementen geven argumenten door aan hun verbonden functies. Bijvoorbeeld, het BasePart.Touched evenement geeft het object door dat het deel aanraakte (zoals een linkerhand of autoband), en het Players.PlayerAdded evenement geeft de Player door die je spel betrad.

De volgende codevoorbeeld toont hoe je een functie genaamd onPartTouched() verbindt met het Touched evenement van een deel:

-- Gaat ervan uit dat het script aan het deel is gekoppeld
local part = script.Parent
-- De functie die je wilt uitvoeren
local function onPartTouched(object)
print("Het deel is aangeraakt door", object:GetFullName())
end
-- Verbind de functie met het Touched evenement van het deel
part.Touched:Connect(onPartTouched)

Je kunt ook anonieme functies aan evenementen koppelen wanneer je variabelen in de bovenliggende scope wilt gebruiken en de functie niet elders nodig hebt. Bijvoorbeeld, dit codevoorbeeld vermijdt de ongemakkelijke tussenliggende functie van het vergelijkbare voorbeeld in Services:

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
-- Anonieme functie die saveProgress() aanroept wanneer een karakter uit het spel wordt verwijderd
-- (in dit geval, wanneer de speler vertrekt).
Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(saveProgress)
end)

Ontkoppel functies van evenementen

De Connect() methode retourneert een RBXScriptConnection object. Als je een functie aan een evenement verbindt, maar de functie niet wilt aanroepen de volgende keer dat een evenement afgaat (bijvoorbeeld nadat aan een bepaalde voorwaarde is voldaan), ontkoppel het door Disconnect() aan te roepen op het RBXScriptConnection object.

De volgende codevoorbeeld toont hoe je een functie verbindt en ontkoppelt van het Part.Touched evenement:

local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local targetPart = Workspace.TargetPart
-- Verklaar een lege placeholder variabele voor de verbinding
local connection
local function onPartTouched(otherPart)
if otherPart == targetPart then
print("Het deel raakte het doel aan!")
-- Ontkoppel de verbinding
connection:Disconnect()
end
end
-- Verbind de bovenstaande functie met het Touched evenement
connection = part.Touched:Connect(onPartTouched)

Wacht op evenementen om af te gaan

Als je wilt dat een script wacht totdat een specifiek evenement afgaat, gebruik dan de Wait() methode. Deze methode retourneert de argumenten van het evenement, die je aan variabelen kunt toewijzen voor later gebruik:

local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local touchedPart = part.Touched:Wait()
print("Het deel is aangeraakt door", touchedPart:GetFullName())

Andere soorten evenementen

©2026 Roblox Corporation. Roblox, het Roblox-logo en Powering Imagination behoren tot onze geregistreerde en niet-geregistreerde handelsmerken in de VS en andere landen.