ClickDetector

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

ClickDetector consente a Scripts e LocalScripts di ricevere l'input del puntatore su oggetti 3D attraverso il loro evento MouseClick.Lavorano quando sono genitori di BasePart , Model , o Folder oggetti.Rilevano eventi di base del mouse: Uscire, Entrare, clic sinistro e clic destro.L'input touch su TouchEnabled dispositivi lancia anche eventi di clic.

Gli script di controllo predefiniti si legano a ButtonR2 per interagire con ClickDetectors utilizzando ContextActionService:BindActivate(), che può essere utilizzato anche per annullare questo.Quando si utilizzano i gamepad, il punto centrale attiva MouseHoverEnter e MouseHoverLeave .Il pulsante di attivazione legato lancia MouseClick .

MaxActivationDistance può essere utilizzato per limitare la distanza da cui un giocatore può essere da un rilevatore di clic prima che non sia più cliccabile.

ClickDetector eventi di fuoco su entrambi il client e il Server.Poiché un LocalScript sarà eseguito solo se discende da un Player o giocatore Character , di solito non è utile mettere un LocalScript all'interno di un ClickDetector , poiché lo script non verrà eseguito o l'oggetto non sarà cliccabile.Se hai bisogno di un LocalScript per rilevare eventi ClickDetector, StarterPlayerScripts potrebbe essere un posto migliore invece.

Priorità di input

Se più ClickDetectors può rilevare l'input dell'utente, solo il più profondo lancerà eventi. Se due ClickDetectors sono fratelli, il primo avrà la priorità.

Se un'azione legata con ContextActionService utilizza lo stesso input di un ClickDetector , l'azione legata con ContextActionService avrà la priorità sugli eventi del rilevatore di clic.

UserInputService.InputBegan sarà attivato prima di ClickDetector eventi.

Campioni di codice

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)

Sommario

Proprietà

Eventi

Proprietà

CursorIcon

ContentId
Lettura Parallela

Imposta l'icona del cursore da mostrare quando il mouse viene posizionato sul padre di questo ClickDetector o DragDetector .Se questa proprietà è lasciata vuota, il rilevatore utilizzerà l'Iconapredefinita.

Per cambiare l'Iconadel cursore, imposta questa proprietà sull'ID risorsa dell'immagine che vorresti utilizzare.

MaxActivationDistance

Lettura Parallela

Questa proprietà controlla la distanza massima, in studs, tra un Character e il ClickDetector o DragDetector per il giocatore di poter interagire con esso.Ad esempio, un personaggio entro 10 studs di un ClickDetector o DragDetector con una distanza di attivazione massima di 5 non sarebbe in grado di utilizzare il rilevatore perché è fuori portata.

Metodi

Eventi

MouseClick

Questo evento si attiva da un Script o LocalScript quando un giocatore interagisce con un ClickDetector o DragDetector tramite i seguenti input:

  • Sulle piattaforme con un Topo, or mouse as computer mouse, quando il giocatore ha lasciato i clic del mouse.
  • Su TouchEnabled piattaforme, quando il giocatore tocca.
  • Su GamepadEnabled piattaforme, quando il punto centrale è sopra lo stesso modello e il pulsante A viene premuto e rilasciato.

Nota che il Character del Giocatoredeve essere all'interno del MaxActivationDistance del rilevatore.

Parametri

playerWhoClicked: Player

Il Player che ha cliccato sul padre di un ClickDetector o DragDetector .


MouseHoverEnter

Questo evento si attiva da un Script o LocalScript quando il genitore di un ClickDetector o DragDetector viene sovrapposto da un Giocatore.Questo non implica alcuna interazione esplicita con il rilevatore, per cui puoi ascoltare gli eventi MouseClick e RightMouseClick.

A causa della natura dell'input dell'utente, non dovresti dipendere da tutti gli eventi MouseHoverEnter che sparano un evento corrispondente MouseHoverLeave.

Parametri

playerWhoHovered: Player

Il Player che ha iniziato a hover sui genitori di un ClickDetector o DragDetector .


Campioni di codice

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

Questo evento si attiva da un Script o LocalScript quando il cursore di un Giocatoresi allontana dal padre di un ClickDetector o DragDetector .Questo non implica alcuna interazione esplicita con il rilevatore, per cui puoi ascoltare gli eventi MouseClick e RightMouseClick.

A causa della natura dell'input dell'utente, non dovresti dipendere da tutti gli eventi MouseHoverLeave che si attivano dopo un evento corrispondente MouseHoverEnter.

Parametri

playerWhoHovered: Player

Il Player il cui cursore si è spostato fuori dal padre di un ClickDetector o DragDetector .


Campioni di codice

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

Questo evento si attiva da un lato da un Script o LocalScript quando un giocatore fa clic con il mouse destro sul cursore su un ClickDetector o DragDetector .Nota che il Giocatoredi Character deve essere all'interno del MaxActivationDistance del rilevatore.

Parametri

playerWhoClicked: Player

Il Player che ha cliccato con il cursore del mouse sul genitore di un ClickDetector o DragDetector .