点击探测器 允许 Scripts 和 LocalScripts 通过其 MouseClick 事件接收 3D 对象的指针输入。当作为父辈传给 BasePart , Model 或 Folder 对象时,它们会工作。它们检测基本鼠标事件:输入、离进入、左键单击和右键点按。TouchEnabled 设备上的触摸输入也会触发单击事件。
默认控制脚本绑定 ButtonR2 与 ClickDetectors 使用 ContextActionService:BindActivate() 进行交互,也可用于覆盖此。使用游戏手柄时,中心点触发 MouseHoverEnter 和 MouseHoverLeave 。绑定激活按钮发射 MouseClick .
MaxActivationDistance 可用于限制玩家在点击检测器之前可能从其距离的距离。
ClickDetector 事件在客户端和服务器上发生。由于 LocalScript 只会在其从 Player 或玩家 Character 降级时运行,因此通常不需要将 LocalScript 放置在 ClickDetector 内,因为脚本不会运行或对象无法单击。如果您需要检测 事件,那么 可能是更好的选择。
输入优先级
如果多个 ClickDetectors 可以检测用户输入,只有最深的会触发事件。如果两个 ClickDetectors 是兄弟姐妹,第一个将获得优先权。
如果使用 ContextActionService 绑定的行动使用与 ClickDetector 相同的输入,那么使用 ContextActionService 绑定的行动将优先于点击检测器的事件。
UserInputService.InputBegan 将在 ClickDetector 事件之前发射。
代码示例
将此代码放置在 Script 内的 ClickDetector 内。代码示例创建了对父级的引用并定义了一个函数来显示欢迎玩家的消息。最后,它将 MouseClick 事件连接到定义的函数。
local clickDetector = script.Parent
local function onClicked(player)
-- 向玩家显示消息
local msg = Instance.new("Message")
msg.Parent = player:FindFirstChild("PlayerGui")
msg.Text = "Hello, " .. player.Name
wait(2.5)
msg:Destroy()
end
-- 将函数连接到鼠标单击事件
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)
概要
属性
将鼠标悬停在此 ClickDetector 或 DragDetector 的父辈上时显示滚动器图标。
角色与 ClickDetector 或 DragDetector 之间的最大距离,以便玩家能够与其进行互动。
活动
当玩家与 ClickDetector 或 DragDetector 的父辈互动时,发生火焰。
当父辈的 ClickDetector 或 DragDetector 被玩家悬停时发火
当玩家的鼠标悬停在 ClickDetector 或 DragDetector 的父级上时,发生火焰。
当玩家右键单击鼠标滚轮在 ClickDetector 或 DragDetector 上时发生火焰。
属性
CursorIcon
MaxActivationDistance
方法
活动
MouseHoverEnter
参数
代码示例
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
参数
代码示例
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)