ProximityPrompt 对象 鼓励用户在接近体验中的对象(如门、灯开关和按钮)时触发操作。使用此对象,您可以:
- 指示用户可以与体验中的哪些对象进行交互。
- 显示用户可以对对象采取的操作,然后通过用户输入(如按下或长按一个键)来触发该操作。
- 显示所有输入类型(如键盘、游戏控制器和触摸屏键)的正确输入。
创建近距离提示
您必须将近距离提示与您希望用户交互的部件、模型或附件父级。要将近距离提示添加到 BasePart、Model 或 Attachment 对象:
在 资源管理器 窗口中,将鼠标悬停在 BasePart、Model 或 Attachment 上,然后单击 ⊕ 按钮。将显示上下文菜单。
从菜单中插入一个 ProximityPrompt。

自定义近距离提示
您可以根据希望它如何 显示、何时希望它 可见 和用户需要做什么 触发操作 来自定义近距离提示。
显示
近距离提示需要传达三件事:
- 用户可以与之交互的 对象。
- 当他们与近距离提示交互时触发的 操作。
- 用户必须按下或保持的 键。
您可以通过以下属性来指定这些:
ObjectText 用户可以与之交互的对象的可选名称。
ActionText 用户将触发的操作的可选名称。
KeyboardKeyCode 用户必须按下或保持以触发操作的键盘键。
GamepadKeyCode 用户必须按下或保持以触发操作的游戏控制器键。

可见性
您可以通过其 MaxActivationDistance、RequiresLineOfSight 和 Exclusivity 属性控制近距离提示何时可见。
MaxActivationDistance
MaxActivationDistance 属性允许您定义从 ProximityPrompt 对象周围激活近距离提示可见性的范围。一旦用户的角色进入该范围,近距离提示就会变得可见。

RequiresLineOfSight
RequiresLineOfSight 属性在从 相机 到 ProximityPrompt 对象有清晰路径时激活近距离提示的可见性。默认情况下,此属性设置为 true。
Exclusivity
如果用户的角色位于多个近距离提示的范围内,则每个近距离提示的可见性取决于相机指向的近距离提示,以及每个近距离提示的 Exclusivity 属性值。

互动性
您可以通过其 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)