ProximityPrompt 物件鼓勵使用者與對象互動,當它們接近體驗物件,例如門、光源開關和按鈕時,就會觸發行動。使用此對象,您可以:
- 指示使用者可以在體驗中與哪些對象互動。
- 顯示使用者可以對物件執行的行動,然後通過按下或按住鍵等使用者輸入來觸發行動。
- 顯示所有輸入類型的正確輸入,例如鍵盤、遊戲控制器和觸摸屏按鍵。
創建近接提示
您必須將接近提示傳給想要讓使用者互動的零件、模型或附件。要將感應提示添加到 BasePart 、 Model 或 Attachment 物件:
在 檢索器 視窗中,將鼠標懸停在 BasePart 、 Model 或 Attachment 上,然後單擊 ⊕ 按鈕。一個上下文菜單顯示。
從選單中插入 靠近提示 。
自訂近接提示
您可以根據您希望它出現的方式、當您希望它可見的方式以及您希望用戶做什麼來啟動行動來自定義感應提示。
外觀
接近提示需要傳達三件事:
- 使用者可以互動的 對象 。
- 當與感應提示互動時触發的 行動 ,用於觸發當他們與感應提示互動時。
- 使用者必須按下或保持的 鍵 。
您可以通過以下屬性來指定它們:
ObjectText 用戶可以與對象互動的可選名稱。
ActionText 一個可選的名稱,用戶會觸發的行動。
KeyboardKeyCode 用戶必須按下或保持按鍵以啟動行動作。
GamepadKeyCode 用戶必須按下或保持遊戲控制器按鍵以啟動行動作。
可見度
您可以通過其 MaxActivationDistance、RequiresLineOfSight 和 Exclusivity 屬性來控制感應提示何時會顯示。
最大激活距離
MaxActivationDistance 屬性讓你能夠定義從周圍的 ProximityPrompt 對象啟用偵測提示的範圍。一旦使用者的角色進入該範圍,就會顯示近接提示。

需要線路視野
RequiresLineOfSight 屬性啟用從 相機 到 ProximityPrompt 對物件的清晰路徑時顯示近接提示。預設情況下,此屬性設為真值。
獨家性
如果使用者的角色在多個感應提示範圍內,每個感應提示的可見度取決於攝影機指向的感應提示,以及每個感應提示的 Exclusivity 屬性值。

互動性
您可以通過其 HoldDuration 和 ClickablePrompt 屬性自定義用戶與靠近提示互動的方式。
持有時間
HoldDuration 屬性決定用戶在感應提示的行動發生之前需要按下多少秒的鍵。如果此屬性有值 0 ,則接近提示的行動立即啟動。
可點擊的提示
ClickablePrompt 屬性指定用戶是否可以單擊感應提示以啟動其動作。當設為 真實 時,使用者可以直接單擊感應提示 或 按指定鍵來與感應提示互動。當設為 假 時,使用者只能按下指定的鍵與接近提示互動。
腳本近接提示
您可以透過 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)