近距离提示

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

ProximityPrompt 对象 鼓励用户在接近体验中的对象(如门、灯开关和按钮)时触发操作。使用此对象,您可以:

  • 指示用户可以与体验中的哪些对象进行交互。
  • 显示用户可以对对象采取的操作,然后通过用户输入(如按下或长按一个键)来触发该操作。
  • 显示所有输入类型(如键盘、游戏控制器和触摸屏键)的正确输入。

创建近距离提示

您必须将近距离提示与您希望用户交互的部件、模型或附件父级。要将近距离提示添加到 BasePartModelAttachment 对象:

  1. 资源管理器 窗口中,将鼠标悬停在 BasePartModelAttachment 上,然后单击 ⊕ 按钮。将显示上下文菜单。

  2. 从菜单中插入一个 ProximityPrompt

    资源管理器层级显示一个附加到附件的近距离提示

自定义近距离提示

您可以根据希望它如何 显示、何时希望它 可见 和用户需要做什么 触发操作 来自定义近距离提示。

显示

近距离提示需要传达三件事:

  • 用户可以与之交互的 对象
  • 当他们与近距离提示交互时触发的 操作
  • 用户必须按下或保持的

您可以通过以下属性来指定这些:

  • ObjectText 用户可以与之交互的对象的可选名称。

  • ActionText 用户将触发的操作的可选名称。

  • KeyboardKeyCode 用户必须按下或保持以触发操作的键盘键。

  • GamepadKeyCode 用户必须按下或保持以触发操作的游戏控制器键。

    指示近距离提示基本元素的图示

可见性

您可以通过其 MaxActivationDistanceRequiresLineOfSightExclusivity 属性控制近距离提示何时可见。

MaxActivationDistance

MaxActivationDistance 属性允许您定义从 ProximityPrompt 对象周围激活近距离提示可见性的范围。一旦用户的角色进入该范围,近距离提示就会变得可见。

图示指示角色与近距离提示对象的距离如何影响提示是否出现在屏幕上

RequiresLineOfSight

RequiresLineOfSight 属性在从 相机ProximityPrompt 对象有清晰路径时激活近距离提示的可见性。默认情况下,此属性设置为 true。

Exclusivity

如果用户的角色位于多个近距离提示的范围内,则每个近距离提示的可见性取决于相机指向的近距离提示,以及每个近距离提示的 Exclusivity 属性值。

设置为 OnePerButton 独占性的近距离提示对象
每个输入键码仅可见一个近距离提示。如果多个在范围内的近距离提示使用不同的键码,所有它们都会可见。然而,如果多个在范围内的近距离提示使用相同的键码,则在任何给定时间仅可见一个近距离提示,具体取决于相机的视角。

互动性

您可以通过其 HoldDurationClickablePrompt 属性定制用户与近距离提示的互动方式。

HoldDuration

HoldDuration 属性确定用户必须按下键多少秒才能触发近距离提示的操作。如果该属性的值为 0,则近距离提示的操作会立即触发。

ClickablePrompt

ClickablePrompt 属性指定用户是否可以点击近距离提示以触发其操作。当设置为 true 时,用户可以通过直接点击近距离提示 按下指定的键与近距离提示交互。当设置为 false 时,用户只能通过按下指定的键与近距离提示交互。

脚本近距离提示

您可以在 ProximityPrompt 对象本身或通过 ProximityPromptService 全局连接到近距离提示事件。ProximityPromptService 允许您从一个位置管理所有近距离提示行为,避免在体验中需要重复代码。

事件描述
PromptTriggered在玩家与近距离提示交互时触发(在持续时间为非零的 HoldDuration 后)。
PromptTriggerEnded当玩家停止与近距离提示交互时触发。
PromptButtonHoldBegan在玩家开始与具有非零 HoldDuration 值的近距离提示交互时触发。
PromptButtonHoldEnded在玩家停止与具有非零 HoldDuration 值的近距离提示交互时触发。
PromptShownLocalScripts 中触发,当近距离提示变为可见时。
PromptHiddenLocalScripts 中触发,当提示被隐藏时。

以下代码示例包括使用 ProximityPromptService 的基本框架:


local ProximityPromptService = game:GetService("ProximityPromptService")
-- 检测提示被触发时
local function onPromptTriggered(promptObject, player)
end
-- 检测提示保持开始时
local function onPromptHoldBegan(promptObject, player)
end
-- 检测提示保持结束时
local function onPromptHoldEnded(promptObject, player)
end
-- 连接提示事件到处理函数
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。