ClickDetector

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Detektor klik pozwala Scripts i LocalScripts otrzymywać wskazanie na obiekty 3D za pośrednictwem ich wydarzenia MouseClick.Funkcjonują, gdy są przypisane do BasePart , Model lub Folder obiektów rodzicielskich.Wykrywają podstawowe zdarzenia myszy: opuszczać, wprowadzać, lewy klik i prawy klikać.Wejście dotykowe na urządzeniach TouchEnabled również uruchamia zdarzenia kliknięć.

Domyślne skrypty kontroli wiążą ButtonR2 z interakcją z ClickDetectors za pomocą ContextActionService:BindActivate(), które można również użyć do ich anulowania.Podczas używania gamepadów punkt środkowy uruchamia MouseHoverEnter i MouseHoverLeave.Przycisk aktywacji przypięty strzela MouseClick .

MaxActivationDistance można użyć, aby ograniczyć odległość, z jakiej gracz może być od detektora kliknięć, zanim nie będzie już można go kliknąć.

ClickDetector zdarzenia ognia na obu klientach i serwerach.Ponieważ LocalScript będzie uruchomione tylko wtedy, gdy pochodzi z Player lub graczem Character, zwykle nie jest użyteczne umieszczenie LocalScript wewnątrz ClickDetector, ponieważ skrypt nie zostanie uruchomiony lub obiekt nie będzie klikalny.Jeśli potrzebujesz LocalScript do wykrycia wydarzeń ClickDetector, StarterPlayerScripts może być lepszym miejscem zamiast tego.

Priorytet wejścia

Jeśli wiele ClickDetectors może wykryć wejście użytkownika, tylko najgłębsze będzie strzelać zdarzenia. Jeśli dwa ClickDetectors są siostrami, pierwszy będzie miał pierwszeństwo.

Jeśli akcja wiązana z ContextActionService używa tego samego wejścia, co akcja wiązana z ClickDetector, akcja wiązana z ContextActionService będzie miała pierwszeństwo nad wydarzeniami detektora kliknięć.

UserInputService.InputBegan będzie strzelać przed ClickDetector wydarzeniami.

Przykłady kodu

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)

Podsumowanie

Właściwości

Zdarzenia

Właściwości

CursorIcon

ContentId
Odczyt równoległy

Ustawia ikonę kurora do wyświetlenia, gdy mysz jest przewijana nad rodzicem tego ClickDetector lub DragDetector.Jeśli ta właściwość pozostanie pusta, detektor użyje domyślnego ikona.

Aby zmienić ikonakurora, ustaw tę właściwość na ID zasobu obrazu, który chcesz użyć.

MaxActivationDistance

Odczyt równoległy

Właściwość ta kontroluje maksymalną odległość, w szpilkach, między Character a ClickDetector lub DragDetector dla gracza, aby mógł z nią interakować.Na instancja, postać w odległości 10 metrów od ClickDetector lub DragDetector z maksymalną odległością aktywacji 5 nie będzie w stanie używać detektora, ponieważ jest poza zasięgiem.

Metody

Zdarzenia

MouseClick

To wydarzenie wystrzeliwuje z Script lub LocalScript gdy gracz wchodzi w interakcję z ClickDetector lub DragDetector za pomocą następujących wejść:

  • Na platformach z myszą, gdy gracz opuścił kliknięcia myszy.
  • Na platformach TouchEnabled, gdy gracz dotknie.
  • Na platformach GamepadEnabled gdy punkt środkowy jest nad tym samym modelem, a przycisk A jest naciśnięty i uwolniony.

Zauważ, że Character gracza musi znajdować się w MaxActivationDistance detektora.

Parametry

playerWhoClicked: Player

Ten, który kliknął na rodzica Player lub ClickDetector lub DragDetector.


MouseHoverEnter

To wydarzenie wystrzeliwuje z Script lub LocalScript gdy rodzic ClickDetector lub DragDetector jest przewijany przez gracza.Nie oznacza to wyraźnej interakcji z detektorem, do której możesz słuchać wydarzeń MouseClick i RightMouseClick.

Ze względu na naturę wpisu użytkownika nie powinieneś polegać na wszystkich MouseHoverEnter wydarzeniach wystrzeliwujących odpowiednie wydarzenie MouseHoverLeave.

Parametry

playerWhoHovered: Player

Ten Player , który zaczął przesuwać się nad rodzicem ClickDetector lub DragDetector.


Przykłady kodu

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

To wydarzenie wystrzeliwuje z dowolnego Script lub LocalScript miejsca, gdy kurser gracza przemija nad rodzicem ClickDetector lub DragDetector.Nie oznacza to wyraźnej interakcji z detektorem, do której możesz słuchać wydarzeń MouseClick i RightMouseClick.

Ze względu na naturę wpisu użytkownika nie powinieneś polegać na wszystkich MouseHoverLeave wydarzeniach wystrzeliwanych po odpowiednim MouseHoverEnter wydarzeniu.

Parametry

playerWhoHovered: Player

The Player którego kurser przesunął się z poza rodzica ClickDetector lub DragDetector .


Przykłady kodu

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

To wydarzenie wystrzeliwuje zarówno z Script lub LocalScript gdy gracz prawym kliknięciem myszy kliknie na kurzorze na ClickDetector lub DragDetector.Zauważ, że Character gracza musi znajdować się w MaxActivationDistance detektora.

Parametry

playerWhoClicked: Player

Ten, który prawym przyciskiem myszy kliknął kursoр na rodzica lub .