接近提示

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

ProximityPrompt 对象 鼓励用户与游戏中的对象(如门、灯开关和按钮)进行交互以触发动作。使用此对象,您可以:

  • 指示用户可以在游戏中与哪些对象进行交互。
  • 显示用户可以在对象上执行的动作,然后通过用户输入(如按下或按住一个键)触发该动作。
  • 显示所有输入类型的正确输入,例如键盘、游戏手柄和触摸屏按键。

创建接近提示

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

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

  2. 从菜单中插入一个 ProximityPrompt

    Explorer 层次结构显示一个 ProximityPrompt 作为 Attachment 的父对象

自定义接近提示

您可以根据希望接近提示的 外观、希望其 可见性 以及希望用户如何 触发动作 来自定义接近提示。

外观

接近提示需要传达三件事:

  • 用户可以与之交互的 对象
  • 当他们与接近提示交互时触发的 动作
  • 用户必须按下或按住的

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

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

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

  • KeyboardKeyCode 用户必须按下或按住的键盘键以触发该动作。

  • GamepadKeyCode 用户必须按下或按住的游戏手柄键以触发该动作。

    指示 ProximityPrompt 基本元素的图示

可见性

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

MaxActivationDistance

MaxActivationDistance 属性允许您定义激活接近提示可见性的范围。一旦用户的角色进入该范围,接近提示将变得可见。

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

RequiresLineOfSight

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

Exclusivity

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

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

交互性

您可以通过其 HoldDurationClickablePrompt 属性自定义用户如何与接近提示交互。

HoldDuration

HoldDuration 属性确定用户必须按下一个键的秒数,才能触发接近提示的动作。如果此属性的值为 0,则接近提示的动作会立即触发。

ClickablePrompt

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

脚本接近提示

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

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

以下代码示例包括使用 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 是我们在美国及其他国家或地区的注册与未注册商标。