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

Umieść ten kod w środku Script wewnątrz ClickDetector .Próbka kodu tworzy odniesienie do rodzica i określa funkcję, która wyświetla wiadomość powitającą gracza.Wreszcie łączy wydarzenie MouseClick z określoną funkcją.

Przykład detektora kliknięć

local clickDetector = script.Parent
local function onClicked(player)
-- Wyświetl wiadomość dla gracza
local msg = Instance.new("Message")
msg.Parent = player:FindFirstChild("PlayerGui")
msg.Text = "Hello, " .. player.Name
wait(2.5)
msg:Destroy()
end
-- Połącz funkcję z wydarzeniem MouseClick
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

Poniższy kod wyświetli "[PlayerName] przesuwał się nad moim rodzicem!", gdy kurser gracza przesuwa się nad rodzicem ClickDetector.Wydrukuje również "[PlayerName] przeszedł z mojego rodzica!", gdy kurser gracza przesuwa się z ojca ClickDetector.

Aby ten przykład działał zgodnie z oczekiwaniami, musi zostać umieszczony w Script lub LocalScript, którego rodzicem jest ClickDetector.

Przesuwanie nad i wyłączanie detektora kliknięć

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

Poniższy kod wyświetli "[PlayerName] przesuwał się nad moim rodzicem!", gdy kurser gracza przesuwa się nad rodzicem ClickDetector.Wydrukuje również "[PlayerName] przeszedł z mojego rodzica!", gdy kurser gracza przesuwa się z ojca ClickDetector.

Aby ten przykład działał zgodnie z oczekiwaniami, musi zostać umieszczony w Script lub LocalScript, którego rodzicem jest ClickDetector.

Przesuwanie nad i wyłączanie detektora kliknięć

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 .