ClickDetector
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
ClickDetector cho phép Scripts và LocalScripts để nhận được đầu vào điểm trên 3D qua sự kiện của họ MouseClick .Chúng hoạt động khi được cha mẹ hóa sang BasePart , Model , hoặc Folder đối tượng.Chúng phát hiện các sự kiện chuột cơ bản: nhập, rời khỏi, nhấp chuột trái và nhấp chuột phải.Nhập chạm vào trên TouchEnabled các thiết bị cũng kích hoạt sự kiện nhấp.
Các kịch bản điều khiển mặc định gắn ButtonR2 vào tương tác với ClickDetectors bằng ContextActionService:BindActivate(), cũng có thể được sử dụng để thay thế điều này.Khi sử dụng gamepad, điểm trung tâm kích hoạt MouseHoverEnter và MouseHoverLeave .Nút kích hoạt gắn bắn ra MouseClick .
MaxActivationDistance có thể được sử dụng để giới hạn khoảng cách mà một người chơi có thể ở từ một máy dò nhấp trước khi nó không còn có thể nhấp vào.
ClickDetector sự kiện bắt lửa trên cả khách và máy chủ.Vì một LocalScript sẽ chỉ chạy nếu nó xuất phát từ một Player hoặc người chơi Character, thường không hữu ích để đặt một LocalScript bên trong một ClickDetector, vì kịch bản sẽ không chạy hoặc đối tượng sẽ không thể nhấp vào.Nếu bạn cần một LocalScript để phát hiện sự kiện ClickDetector , StarterPlayerScripts có thể là một nơi tốt hơn thay thế.
Ưu tiên nhập
Nếu nhiều ClickDetectors có thể phát hiện nhập력 của người dùng, chỉ có sâu nhất sẽ kích hoạt sự kiện. Nếu hai ClickDetectors là anh em, người đầu tiên sẽ được ưu tiên.
Nếu một hành động gắn với ContextActionService sử dụng cùng một đầu vào như một ClickDetector , hành động gắn với ContextActionService sẽ có ưu tiên hơn các sự kiện của máy phát hiện nhấp chuột.
UserInputService.InputBegan sẽ bắn trước khi sự kiện ClickDetector xảy ra.
Mẫu mã
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.
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).
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)
Tóm Tắt
Thuộc Tính
Đặt biểu tượng con trỏ để hiển thị khi chuột được giữ trên cha của ClickDetector hoặc DragDetector này.
Khoảng cách tối đa giữa một nhân vật và ClickDetector hoặc DragDetector để người chơi có thể tương tác với nó.
Sự Kiện
Bắt lửa khi một người chơi tương tác với cha của ClickDetector hoặc DragDetector .
Bắt lửa khi cha của một ClickDetector hoặc DragDetector bị chọn bởi một người chơi.
Bắt lửa khi con trỏ của người chơi lướt khỏi cha của ClickDetector hoặc DragDetector .
Bắt lửa khi một người chơi nhấp chuột phải vào con trỏ chuột của họ trên một ClickDetector hoặc DragDetector .
Thuộc Tính
CursorIcon
Đặt biểu tượng con trỏ để hiển thị khi chuột được giữ trên cha của ClickDetector hoặc DragDetector này.Nếu thuộc tính này được để trống, máy dò sẽ sử dụng biểu tượng mặc định.
Để thay đổi biểu tượng con trỏ, hãy đặt thuộc tính này thành ID tài sản của hình ảnh bạn muốn sử dụng.
MaxActivationDistance
Tính năng này kiểm soát khoảng cách tối đa, bằng đơn vị stud, giữa một Character và ClickDetector hoặc DragDetector để người chơi có thể tương tác với nó.Ví ví dụ / trường hợp, một nhân vật trong 10 đinh tán của một ClickDetector hoặc DragDetector với khoảng cách kích hoạt tối đa là 5 sẽ không thể sử dụng cảm biến vì chúng nằm ngoài phạm vi.
Phương Pháp
Sự Kiện
MouseClick
Sự kiện này bắt lửa từ một Script hoặc LocalScript khi một người chơi tương tác với một ClickDetector hoặc DragDetector thông qua các đầu vào sau:
- Trên các nền tảng có chuột, khi người chơi rời khỏi các lần nhấp chuột.
- Trên TouchEnabled các nền tảng, khi người chơi nhấn.
- Trên các nền tảng GamepadEnabled , khi điểm trung tâm nằm trên cùng một mô hình và nút A được nhấn và thả.
Lưu ý rằng Character của người chơi phải nằm trong MaxActivationDistance của máy dò.
Tham Số
Người Player đã nhấp vào cha của một ClickDetector hoặc DragDetector .
MouseHoverEnter
Sự kiện này bắt lửa từ một Script hoặc LocalScript khi cha của một ClickDetector hoặc DragDetector bị chọn bởi một người chơi.Điều này không liên quan đến sự tương tác rõ ràng với cảm biến, mà bạn có thể lắng nghe các sự kiện MouseClick và RightMouseClick .
Do bản chất của đầu vào người dùng, bạn không nên phụ thuộc vào tất cả các sự kiện MouseHoverEnter được kích hoạt tương ứng với sự kiện MouseHoverLeave .
Tham Số
Người Player bắt đầu lượn trên cha của một ClickDetector hoặc DragDetector .
Mẫu mã
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.
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
Sự kiện này bắt lửa từ một Script hoặc LocalScript khi con trỏ của người chơi lướt khỏi cha của một ClickDetector hoặc DragDetector .Điều này không liên quan đến sự tương tác rõ ràng với cảm biến, mà bạn có thể lắng nghe các sự kiện MouseClick và RightMouseClick .
Do bản chất của đầu vào người dùng, bạn không nên phụ thuộc vào tất cả các sự kiện MouseHoverLeave sau một sự kiện tương ứng MouseHoverEnter.
Tham Số
Các thành phần Player có con trỏ di chuyển ra khỏi cha của một ClickDetector hoặc DragDetector .
Mẫu mã
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.
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
Sự kiện này bắt lửa từ một Script hoặc LocalScript khi một người chơi nhấp chuột phải vào con trỏ của họ trên một ClickDetector hoặc DragDetector .Lưu ý rằng Character của người chơi phải nằm trong MaxActivationDistance của máy dò.
Tham Số
Người Player ai đã nhấp chuột phải vào con trỏ chuột của họ trên cha của một ClickDetector hoặc DragDetector .