Eventos

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Eventos são ocorrências dentro do seu jogo que você pode ouvir e responder. Muitos serviços e objetos do Roblox têm eventos internos que são automaticamente acionados em resposta a ações ou mudanças específicas.

Por exemplo, o Character de um jogador tocando um BasePart aciona automaticamente um evento Touched. Cada vez que um jogador entra no seu jogo, o evento Players.PlayerAdded é acionado.

Devido à grande quantidade de eventos e à arquitetura cliente-servidor, a programação no Roblox é frequentemente chamada de orientada a eventos. Essa abordagem é diferente de muitas outras engines de jogos, que enfatizam a execução de código em uma base de quadro por quadro.

Você não precisa ouvir eventos ou tomar qualquer ação em resposta a eles, mas os eventos estão sendo acionados e disponíveis, mesmo assim. Quando você quiser responder a um evento, você conecta uma função a ele.

Conectar funções a eventos

Você conecta uma função a um evento usando Connect() para executar código cada vez que o evento é acionado. A maioria dos eventos passa argumentos para suas funções conectadas. Por exemplo, o evento BasePart.Touched passa o objeto que tocou a parte (como uma mão esquerda ou roda de carro), e o evento Players.PlayerAdded passa o Player que entrou no seu jogo.

O seguinte exemplo de código demonstra como conectar uma função chamada onPartTouched() ao evento Touched de uma parte:


-- Presume que o script está parentado à parte
local part = script.Parent
-- A função que você deseja executar
local function onPartTouched(object)
print("A parte foi tocada por", object:GetFullName())
end
-- Conectar a função ao evento Touched da parte
part.Touched:Connect(onPartTouched)

Você também pode conectar funções anônimas a eventos quando quiser usar variáveis no escopo pai e não precisar usar a função em outro lugar. Por exemplo, este exemplo de código evita a função intermediária awkward do exemplo similar em Serviços:


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
-- Função anônima que chama saveProgress() quando um personagem é removido
-- do jogo (neste caso, quando o jogador sai).
Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(saveProgress)
end)

Desconectar funções de eventos

O método Connect() retorna um objeto RBXScriptConnection. Se você conectar uma função a um evento, mas não quiser chamar a função da próxima vez que um evento for acionado (como depois que uma certa condição for atendida), desconecte-a chamando Disconnect() no objeto RBXScriptConnection.

O seguinte exemplo de código mostra como conectar e desconectar uma função do evento Part.Touched:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local targetPart = Workspace.TargetPart
-- Declarar uma variável de espaço reservado vazia para a conexão
local connection
local function onPartTouched(otherPart)
if otherPart == targetPart then
print("A parte atingiu o alvo!")
-- Desconectar a conexão
connection:Disconnect()
end
end
-- Conectar a função acima ao evento Touched
connection = part.Touched:Connect(onPartTouched)

Aguardar pelos eventos serem acionados

Se você quiser que um script pause até que um evento específico seja acionado, use o método Wait(). Este método retorna os argumentos do evento, que você pode atribuir a variáveis para uso posterior:


local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local touchedPart = part.Touched:Wait()
print("A parte foi tocada por", touchedPart:GetFullName())

Outros tipos de eventos

©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.