ProximityPrompt 对象鼓励用户与物体互动,当它们接近体验对象,例如门、灯开关和按钮时,触发行动。使用此对象,您可以:
- 指示用户在体验中可以与哪些对象互动。
- 显示用户可以对对象执行的行动,然后通过按下或按住键等用户输入触发行动。
- 显示所有输入类型的正确输入,例如键盘、游戏手柄和触摸屏按键。
创建近距离提示
您必须将靠近提示发送到您希望用户与之交互的零件、模型或附件。要将靠近提示添加到 BasePart 、 Model 或 Attachment 对象:
在 浏览器 窗口中,将鼠标悬停在 BasePart , Model 或 Attachment 上,然后单击 ⊕ 按钮。将显示上下文菜单。
从菜单中插入一个 靠近提示 。
自定义近距离提示
您可以根据您希望它显示的方式来定制靠近提示,当您希望它显示时,当您希望它显示时,当您希望用户执行某个操作来触发该操作时,来定制靠近提示。
外观
靠近提示需要传达三件事:
- 用户可以交互的 对象 。
- 当与靠近提示互动时触发的 行动 ,用于检测靠近传感器的物体。
- 用户必须按下或保持的 键 。
您可以通过以下属性来指定它们:
ObjectText 用户可以与对象互动的可选名称。
ActionText 用户会触发的行动的可选名称。
KeyboardKeyCode 用户必须按下或按住的键盘按钮来触发行动作。
GamepadKeyCode 用户必须按下或按住游戏手柄键来触发行动作。
可见度
您可以通过其 MaxActivationDistance、RequiresLineOfSight 和 Exclusivity 属性控制何时显示靠近提示。
最大激活距离
MaxActivationDistance 属性允许您定义从周围的 ProximityPrompt 对象激活靠近提示可见范围。一旦用户的角色进入该范围,靠近提示就会显示。

需要线路视野
RequiresLineOfSight 属性激活了从 相机 到ProximityPrompt的明确路径时遥控提示的可见性。默认情况下,此属性设置为真值。
排他性
如果用户的角色在多个靠近提示范围内,每个靠近提示的可见度取决于相机所指的靠近提示以及每个靠近提示的 Exclusivity 属性值。

互动性
您可以通过其 HoldDuration 和 ClickablePrompt 属性来自定义用户与靠近提示互动的方式。
保持时间
HoldDuration 属性决定用户在感应提示的行动触发前需要按多少秒键。如果此属性的值为 0 , 靠近提示的行动立即触发。
可点击的提示
ClickablePrompt 属性指定了用户是否可以单击靠近提示来触发其动作。当设置为 true 时,用户可以通过直接单击接近提示 或 按指定键来与接近提示互动。当设置为 虚假 时,用户只能通过按指定的键与靠近提示互动。
脚本近距离提示
您可以通过 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)