接近提示

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

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

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

创建接近提示

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

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

  2. 从菜单中插入一个 ProximityPrompt。

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

自定义接近提示

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

外观

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

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

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

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

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

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

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

    指示 ProximityPrompt 基本元素的图示

可见性

您可以通过其 MaxActivationDistance、RequiresLineOfSight 和 Exclusivity 属性控制接近提示何时可见。

MaxActivationDistance

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

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

RequiresLineOfSight

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

Exclusivity

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

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

交互性

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

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 是我们在美国及其他国家或地区的注册与未注册商标。