ClickDetector

Mostrar obsoleto

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

Detector de Clique permite que Scripts e LocalScripts recebam a entrada de ponteiro em objetos 3D através de seu evento MouseClick.Eles funcionam quando parentados a BasePart , Model ou Folder objetos.Eles detectam eventos básicos do mouse: inserir/digitar, sair, clicar para a esquerda e clicar para a direita.A entrada de toque em TouchEnabled dispositivos também dispara eventos de clique.

Os scripts de controle padrão vinculam ButtonR2 a interagir com ClickDetectors usando ContextActionService:BindActivate(), que também pode ser usado para substituir isso.Ao usar gamepads, o ponto central aciona MouseHoverEnter e MouseHoverLeave .O botão de ativação vinculado dispara MouseClick .

MaxActivationDistance pode ser usado para limitar a distância que um jogador pode estar de um detector de cliques antes que não seja mais clicável.

ClickDetector eventos de fogo ocorrem tanto no cliente quanto no servidor.Como um LocalScript só será executado se descender de um Player ou jogador Character, geralmente não é útil colocar um LocalScript dentro de um ClickDetector, pois o script não será executado ou o objeto não será clicável.Se você precisar de um LocalScript para detectar ClickDetector eventos, StarterPlayerScripts pode ser um lugar melhor em vez disso.

Prioridade de entrada

Se vários ClickDetectors detectarem a entrada do usuário, apenas o mais profundo disparará eventos. Se dois ClickDetectors forem irmãos, o primeiro terá prioridade.

Se uma ação vinculada com ContextActionService usa o mesmo input de um ClickDetector, a ação vinculada com ContextActionService terá prioridade sobre os eventos do detector de cliques.

UserInputService.InputBegan vai disparar antes de ClickDetector eventos.

Amostras de código

Place this code inside a Script inside a ClickDetector. The code sample creates a reference to the parent and defines a function to show a message that greets a player. Finally, it connects the MouseClick event to the defined function.

ClickDetector Example

local clickDetector = script.Parent
local function onClicked(player)
-- Show a message to the player
local msg = Instance.new("Message")
msg.Parent = player:FindFirstChild("PlayerGui")
msg.Text = "Hello, " .. player.Name
wait(2.5)
msg:Destroy()
end
-- Connect the function to the MouseClick event
clickDetector.MouseClick:Connect(onClicked)

This code sample will allow a part to be clicked to toggle its anchored property. When toggled, the visual appearance of the part is updated (red means anchored, yellow means free).

Part Anchored Toggle

local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)

Resumo

Propriedades

Eventos

Propriedades

CursorIcon

ContentId
Ler Parallel

Define o ícone do cursor para exibir quando o mouse está sobre o pai deste ClickDetector ou DragDetector .Se esta propriedade for deixada em branco, o detector usará o ícone padrão.

Para alterar o ícone do cursor, defina esta propriedade para o ID do recurso da imagem que você gostaria de usar.

MaxActivationDistance

Ler Parallel

Essa propriedade controla a distância máxima, em studs, entre um Character e o ClickDetector ou DragDetector para o jogador poder interagir com ele.Por instância, um personagem dentro de 10 metros de um ClickDetector ou DragDetector com uma distância máxima de ativação de 5 não seria capaz de usar o detector porque está fora de alcance.

Métodos

Eventos

MouseClick

Este evento dispara de um Script ou LocalScript quando um jogador interage com um ClickDetector ou DragDetector via os seguintes inputs:

  • Em plataformas com um mouse, quando o jogador deixou cliques de mouse.
  • Em TouchEnabled plataformas, quando o jogador toca.
  • Em GamepadEnabled plataformas, quando o ponto central está sobre o mesmo modelo e o botão A é pressionado e liberado.

Observe que o Character deve estar dentro do MaxActivationDistance.

Parâmetros

playerWhoClicked: Player

O Player que clicou no pai de um ClickDetector ou DragDetector .


MouseHoverEnter

Este evento dispara de um Script ou LocalScript quando o pai de um ClickDetector ou DragDetector for sobreposto por um jogador.Isso não envolve interação explícita com o detector, para o qual você pode ouvir os eventos MouseClick e RightMouseClick.

Devido à natureza da entrada do usuário, você não deve depender de todos os MouseHoverEnter disparando um evento correspondente MouseHoverLeave.

Parâmetros

playerWhoHovered: Player

O Player que começou a pairar sobre o pai de um ClickDetector ou DragDetector .


Amostras de código

The following code will print "[PlayerName] hovered over my parent!" when a player's cursor hovers over the ClickDetector parent. It will also print "[PlayerName] hovered off my parent!" when the player's cursor moves off the ClickDetector parent.

In order for this example to work as expected, it must be placed in a Script or LocalScript whose parent is a ClickDetector.

Hovering Over and Off a ClickDetector

local clickDetector = script.Parent:FindFirstChildOfClass("ClickDetector")
clickDetector.MouseHoverEnter:Connect(function(player)
print(player.Name .. " hovered over my parent!")
end)
clickDetector.MouseHoverLeave:Connect(function(player)
print(player.Name .. " hovered off my parent!")
end)

MouseHoverLeave

Este evento dispara de um Script ou LocalScript quando o cursor de um jogador paira fora do pai de um ClickDetector ou DragDetector .Isso não envolve interação explícita com o detector, para o qual você pode ouvir os eventos MouseClick e RightMouseClick.

Devido à natureza da entrada do usuário, você não deve depender de todos os eventos MouseHoverLeave disparados após um evento correspondente MouseHoverEnter.

Parâmetros

playerWhoHovered: Player

O Player cujo cursor se afastou do pai de um ClickDetector ou DragDetector .


Amostras de código

The following code will print "[PlayerName] hovered over my parent!" when a player's cursor hovers over the ClickDetector parent. It will also print "[PlayerName] hovered off my parent!" when the player's cursor moves off the ClickDetector parent.

In order for this example to work as expected, it must be placed in a Script or LocalScript whose parent is a ClickDetector.

Hovering Over and Off a ClickDetector

local clickDetector = script.Parent:FindFirstChildOfClass("ClickDetector")
clickDetector.MouseHoverEnter:Connect(function(player)
print(player.Name .. " hovered over my parent!")
end)
clickDetector.MouseHoverLeave:Connect(function(player)
print(player.Name .. " hovered off my parent!")
end)

RightMouseClick

Este evento é disparado de um Script ou LocalScript quando um jogador clica com o botão direito do mouse no cursor de um ClickDetector ou DragDetector .Observe que o Character do jogador deve estar dentro do MaxActivationDistance do detector.

Parâmetros

playerWhoClicked: Player

O Player que clicou com o botão direito no cursor do mouse no pai de um ClickDetector ou DragDetector .