Événements

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Les événements sont des occurrences au sein de votre jeu auxquelles vous pouvez écouter et répondre. De nombreux services et objets de Roblox ont des événements intégrés qui se déclenchent automatiquement en réponse à des actions ou des changements spécifiques.

Par exemple, le fait que le Character d'un joueur touche un BasePart déclenche automatiquement un événement Touched. Chaque fois qu'un joueur rejoint votre jeu, l'événement Players.PlayerAdded se déclenche.

En raison du grand nombre d'événements et de l'architecture client-serveur, le script Roblox est souvent qualifié d'orienté événements. Cette approche est différente de nombreux autres moteurs de jeu, qui mettent l'accent sur l'exécution de code sur une base de frame par frame.

Vous n'êtes pas obligé d'écouter les événements ou de prendre des mesures en réponse à ceux-ci, mais les événements se déclenchent et sont disponibles néanmoins. Lorsque vous souhaitez répondre à un événement, vous connectez une fonction à celui-ci.

Connecter des fonctions aux événements

Vous connectez une fonction à un événement en utilisant Connect() pour exécuter du code chaque fois que l'événement se déclenche. La plupart des événements transmettent des arguments à leurs fonctions connectées. Par exemple, l'événement BasePart.Touched transmet l'objet qui a touché la pièce (comme une main gauche ou une roue de voiture), et l'événement Players.PlayerAdded transmet le Player qui a rejoint votre jeu.

Le code d'exemple suivant démontre comment connecter une fonction nommée onPartTouched() à l'événement Touched d'une pièce :


-- Suppose que le script est rattaché à la pièce
local part = script.Parent
-- La fonction que vous voulez exécuter
local function onPartTouched(object)
print("La pièce a été touchée par", object:GetFullName())
end
-- Connectez la fonction à l'événement Touched de la pièce
part.Touched:Connect(onPartTouched)

Vous pouvez également connecter des fonctions anonymes aux événements lorsque vous souhaitez utiliser des variables dans la portée parente et que vous n'avez pas besoin d'utiliser la fonction ailleurs. Par exemple, ce code évite la fonction intermédiaire maladroite de l'exemple similaire dans 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
-- Fonction anonyme qui appelle saveProgress() lorsqu'un personnage est retiré
-- du jeu (dans ce cas, lorsque le joueur quitte).
Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(saveProgress)
end)

Déconnecter des fonctions des événements

La méthode Connect() renvoie un objet RBXScriptConnection. Si vous connectez une fonction à un événement, mais que vous ne souhaitez pas appeler la fonction la prochaine fois que l'événement se déclenche (comme après qu'une certaine condition est remplie), déconnectez-la en appelant Disconnect() sur l'objet RBXScriptConnection.

Le code d'exemple suivant montre comment connecter et déconnecter une fonction de l'événement Part.Touched :


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local targetPart = Workspace.TargetPart
-- Déclarez une variable de placeholder vide pour la connexion
local connection
local function onPartTouched(otherPart)
if otherPart == targetPart then
print("La pièce a touché la cible !")
-- Déconnectez la connexion
connection:Disconnect()
end
end
-- Connectez la fonction ci-dessus à l'événement Touched
connection = part.Touched:Connect(onPartTouched)

Attendre que les événements se déclenchent

Si vous souhaitez qu'un script attende qu'un événement spécifique se déclenche, utilisez la méthode Wait(). Cette méthode renvoie les arguments de l'événement, que vous pouvez attribuer à des variables pour une utilisation ultérieure :


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local touchedPart = part.Touched:Wait()
print("La pièce a été touchée par", touchedPart:GetFullName())

Autres types d'événements

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.