您可以创建在用户靠近对象时显示的互动感应提示,然后触发用户输入的行动。
本教程使用 地下城探索 项目作为展示。要继续前进,请在进行之前在 Studio 中打开它。

创建提示
屏幕上的提示由一个 ProximityPrompt 对象生成,该对象被父辈到 Attachment , BasePart 或 Model 。
在 3D 视图中或从探索器中选择 监狱门 模型 ( 工作区 → 提示对象 → 监狱门 ).
扩展其树并选择 门 对象。
在 Attachment 上放置提示,可以让你更好地控制互动点发生的位置,而不是直接放置在零件/模型上。插入一个新的 附件 ,并将其重命名为 快捷附件 。
找到新附件的 位置 属性并将其设置为 -2.25 、 -0.5 、- 0.5 。这将把它移到门钥匙孔的前面。
将鼠标悬停在 提示附件 上,然后插入一个新的 靠近提示 对象。
提示显外观
提示由三个主要元素组成,每个元素都可以通过以下属性进行控制:

- 对象文本 — 与互动的对象的可选名称。
- 行动文本 — 可选的行动名称向用户显示。
- 键盘键代码 — 会触发提示的键盘键。
- 游戏手柄键代码 — 会触发提示的游戏手柄按钮。
要自定义监狱门提示的外观,请进行以下更改:
在属性窗口中,找到 对象文本 属性并键入 门 。
对于 行动文本 属性,输入 选锁 。
激活距离
当用户的 角色 在快速激活对象的父元素范围内移动时,会出现提示。

默认值在大多数情况下都能很好地工作,但您可以通过将 最大激活距离 更改为 4 来将用户交互推得更近锁定。

保持时间
保持时间 属性值决定提示的动作是多快地触发,以秒为单位。因为必须选择此门才能解锁它,将 保持时间 属性更改为 4 。

实现一个动作
检测提示事件的最好方法是通过 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)
事件 | 描述 |
---|---|
PromptTriggered | 当用户与提示交互时(后非零提示的持续时间),发生火焰(HoldDuration)。 |
PromptButtonHoldBegan | 当用户开始与非零 HoldDuration 提示互动时,发生火焰。 |
PromptButtonHoldEnded | 当用户停止与非零提示交互时发生火焰HoldDuration |
在 地下城挖掘 项目中,这些事件由 PromptEvents 脚本在 服务器脚本服务 内管理。

在脚本内,上面的事件简单地调用 ObjectActions ModuleScript 内的函数,也位于 ServerScriptService 中。
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- 检测提示触发时
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- 检测提示保持开始时间
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- 检测提示按钮保持时间结束
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- 将连接提示事件转发到处理函数
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
靠近提示是游戏对象互动的便捷且可定制的解决方案。查看 ProximityPrompt 和 ProximityPromptService 参考页面,获得更多方法来控制提示行为,并在 地牢深渊 中探索其他互动对象以获得创造灵感。