ProximityPrompt 物件鼓勵用戶與3D體驗中的物體(例如門、燈開關和按鈕)互動以觸發動作。使用此物件,您可以:
- 指示用戶可以與哪些物體互動。
- 顯示用戶可以在物體上執行的動作,然後通過按下或長按按鍵等用戶輸入來觸發該動作。
- 顯示所有輸入類型的正確輸入,例如鍵盤、遊戲手柄和觸控螢幕按鍵。
創建接近提示
您必須將接近提示作為子項添加到您希望用戶互動的部件、模型或附件上。要將接近提示添加到 BasePart、Model 或 Attachment 物件:
在 Explorer 視窗中,將滑鼠懸停在 BasePart、Model 或 Attachment 上,然後單擊 ⊕ 按鈕。會顯示一個上下文菜單。
從菜單中,插入一個 ProximityPrompt。

自定義接近提示
您可以根據希望它如何 顯示、何時希望它可 見 以及用戶需要做什麼來 觸發動作 來自定義接近提示。
顯示
接近提示需要傳達三樣東西:
- 用戶可以互動的 物體。
- 與接近提示互動時觸發的 動作。
- 用戶必須按下或長按的 鍵。
您可以通過以下屬性來指定這些信息:
ObjectText 用戶可以互動的物體的可選名稱。
ActionText 用戶將觸發的動作的可選名稱。
KeyboardKeyCode 用戶必須按下或長按的鍵盤按鍵。
GamepadKeyCode 用戶必須按下或長按的遊戲手柄按鍵。

可見性
您可以通過其 MaxActivationDistance、RequiresLineOfSight 和 Exclusivity 屬性來控制接近提示何時顯示。
MaxActivationDistance
MaxActivationDistance 屬性允許您定義觸發接近提示可見性的範圍。一旦用戶的角色進入該範圍,接近提示將變為可見。

RequiresLineOfSight
RequiresLineOfSight 屬性在相機與 ProximityPrompt 物件之間有清晰的路徑時,會觸發接近提示的可見性。默認情況下,此屬性設置為真。
Exclusivity
如果用戶的角色在多個接近提示的範圍內,則每個接近提示的可見性取決於相機指向哪個接近提示,以及每個接近提示的 Exclusivity 屬性值。

互動性
您可以通過接近提示的 HoldDuration 和 ClickablePrompt 屬性自定義用戶如何與接近提示互動。
HoldDuration
HoldDuration 屬性確定用戶按下按鍵所需的秒數,然後接近提示的動作才會觸發。如果此屬性的值為 0,則接近提示的動作會立即觸發。
ClickablePrompt
ClickablePrompt 屬性指定用戶是否可以通過單擊接近提示來觸發其動作。當設置為 true 時,用戶可以通過直接單擊接近提示 或 按下指定的按鍵與接近提示互動。當設置為 false 時,用戶只能通過按下指定的按鍵與接近提示互動。
腳本接近提示
您可以在 ProximityPrompt 物件本身或通過 ProximityPromptService 全球連接接近提示事件。ProximityPromptService 允許您從一個位置管理所有接近提示行為,避免在體驗中重複代碼的需要。
| 事件 | 描述 |
|---|---|
| PromptTriggered | 當玩家與接近提示互動時觸發(在持續時間為非零的接近提示上)。 |
| 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)