經驗中的工具Tools是用戶可以在會話中裝備的互動工具,例如劍、火箭發射器和魔法棒。您可以創建自定義體驗工具,將它們放入體驗層級中,並寫腳本來為使用者實施它們。
創建體驗工具
要創建任何體驗工具的第一步,您需要創建一個工具對象來包含所有構成工具的元素。您可以將其他實例添加到工具對象包括零件和網格、聲音效果和提供功能的腳本。您也可以設置 工具處理、調整工具握力 和 自訂您的工具圖示 來改善使用者體驗。
創建工具對物件
您可以使用以下步驟創建新工具對象:
在 檢索器 窗口中,將鼠標懸停在 工作區 上,然後點擊 ⊕ 按鈕來顯示物件列表。
在 互動 類別下選擇 工具 。
添加零件或網格
創建工具對物件後,您需要將Parts或MeshParts添加到工具模型或將工具作為庫存項目創建而無零件和網格。像其他模型一樣,經驗工具可以由多個 Parts 組成,因此您需要使用 Weld 約束將工具的所有部分連接在一起。
如果您想創建一個工具而不添加零件或網格,您可以創建它作為庫存項目。
設置工具處理手把
要啟用使用者攜帶工具,您需要設置 Part 並將其命名為 Handle 以附加到使用者的手。下面的例子顯示了具有三個部分的魔杖:發光的尖端、主身體和紅色手手把。當使用者裝備魔杖時,他們將它保持在Part命名的Handle。

請確保只有一個 Part 被命名為 Handle 。如果您將多個 Parts 命名為 Handle ,工具將隨機選擇其中一個作為手部附件點,可能會導致用戶握住劍而不是矛的問題。
調整工具握持方向
如果您的工具握住方向不正確,例如在地面上拖動或向後面,您可以在 屬性 窗口中調整 握住 屬性,屬於 外觀 類別下。

每種工具的理想握持方向各不相同,因此您需要嘗試改變 握前 、 握右 和 握上 屬性,直到您的工具握住看起來正確為止。下面的例子顯示了魔杖可能的不正確和正確握住方式:



您也可以使用 GripPos 屬性將用戶角色從手中移除工具。這可能在製作應該放在使用者肩膀上的工具時有用。


自訂工具圖示
使用者擁有的工具存儲在他們的 Backpack 中。使用者可以在 行動欄 上查看每個工具的圖示:

在工具的 屬性 窗口中,使用以下屬性來自定義工具在行動欄中的外觀:
- 紋理ID — 工具圖示。設定此屬性的圖像ID與裝飾和圖像按鈕相同。
- 工具提示 — 在懸停時的工具提示名稱。
啟用和禁用用戶捨棄工具
預設情況下,使用者可以在 Windows 上按下 返回鍵 或在 Mac 上按下 刪除鍵 來掉落工具。您可以通過設置工具的 可被掉落 屬性為 false 來禁用此選項。如果 CanBeDropped 是 false,按下 返回空格鍵 或 刪除 將工具返回使用者的背包。
創建工具作為庫存項目
您也可以將沒有零件或網格的體驗工具作為庫存物品,等待使用者輸入,例如使用者角色可以點擊其他物品或觸碰螢幕來投射它的魔法法術。庫存項目工具不需要處理器,因此您需要在工具的 屬性窗口 中卸下 需要處理器 屬性。

將工具添加到您的體驗
一旦您完成設定體驗工具,您需要將其放置在體驗對象層次結構的正確區域。你在體驗對象層次中放置工具的位置取決於其預期使用。
預設啟動工具
如果您想讓所有使用者都從物品欄中開始使用工具,請將其放入 新手包 文件夾。當任何使用者生成時,系統會將工具複製到他們的背包中。

收藏工具
如果您想允許使用者在移移動工具時收集工具,您可以將工具放置在 工作區 中的 Explorer 層次中。例如,您可能想將超級火箭發射器放置在體驗世界的難以觸及區域。

獲得並購買的工具
如果您想將工具設為獎項,當使用者執行特殊操作或在體驗商商店 商家出售時,將工具放置在 伺服器儲存 階層中的 探索器 層,可以在適當時將工具複製到使用者的背包。

新增工具效果
在將工具添加到體驗後,您可以添加腳本以啟用用戶使用工具進行特殊效果。
工具特定事件
您可以在工具腳指令碼中使用以下四個工具特定條件來指示工具的狀態和用戶的輸入,以及它們之間的關係:
Tool:Equipped() : 發生當使用者從背包中選擇工具時。
Tool:Unequipped() : 發生當使用者放下工具或切換工具時。
Tool:Activated() : 發生當使用者開始啟用工具(點擊、點擊或按下 A 在游戏手柄上)時。
Tool:Deactivated() : 發生當使用者停止啟用輸入(釋放按鈕或觸摸)時。
雖然您設計工具時可能不需要所有四個條件,但您可以使用以下代碼腳本作為基本工具腳本模板:
local tool = script.Parent
local function onEquip()
print("The tool is now equipped.")
end
local function onUnequip()
print("The tool is now unequipped.")
end
local function onActivate()
print("The tool is now activated.")
end
local function onDeactivate()
print("The tool is now deactivated.")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)
本代碼示例假設腳本是工具對物件內的第一級子對象。如果腳本在其他地方,請在第 1 行 (值 tool) 調整路徑以指向核心工具對物件。
添加基本腳指令碼
下面的例子顯示了啟用使用者點擊屏幕即可切換白天和夜晚的魔杖的服務器上添加 Script 的步驟:
在 Explorer 窗口中,將鼠標懸停在工具對象上,然後單擊 ⊕ 按鈕以插入 Script 。
複製以下代碼,並將其貼到你的 Script 中。
local Lighting = game:GetService("Lighting")local tool = script.Parentlocal function onActivate()if Lighting.ClockTime >= 8 and Lighting.ClockTime < 16 thenLighting.ClockTime = 20elseLighting.ClockTime = 8endendtool.Activated:Connect(onActivate)拿起工具,然後點擊您體驗屏幕上的任何地方,切換為白天或夜晚:
不同類型的脚本用於工具實現
有些工具只需要在伺服器上執行 Script 即可實現,例如上一個例子,但大多數工具需要在伺服器和客戶端上執行 Script 和 LocalScript,每個都負責執行工具行為的特定部分。
在添加您的腳本之前,請確保您理解每種腳本類輸入之間的核心差異:
- 腳本 管理整個體驗世界中所有用戶都能看到的變更,例如打開門並射出箭頭。
- 本地腳本 管理僅發生在使用者裝置上的事情,例如偵測他們觸摸或點擊屏幕的位置。
以下是一些示例工具和其行為,由本地腳本或服務器指令碼管理:
工具 | 本地腳指令碼 | 伺服器腳指令碼 |
---|---|---|
創作者魔杖 | 偵測玩家在畫面上觸摸或點擊的位置。 | 在遊戲世界內的位置創建一個新零件,玩家觸碰或點擊過的地方。 |
隱形斗篷 | 在披風配備時,暫時讓玩家對所有其他用戶隱形。 | |
超級弓 | 偵測玩家啟用工具的時間(啟用與停用之間的時間)。 | 射出具有更大或更小力量的魔法箭,取決於偵測到的啟用時間。 |
有關不同的腳本類型的更多信息,請參閱腳本。
排除故障提示
工具可能在 Studio 中運作良好,但不能在實時 Roblox 體驗中運作。如果發生這種情況,請使用以下提示進行故障排除:
- 請確保每個 Script 和 LocalScript 只處理正確的工作。
有關 RemoteEvents 的更多資訊,請參閱 遠端事件和回呼 。