對於許多開發者來說,適應 Roblox 腳本的基本挑戰在於檔案位置和 Script.RunContext 屬性的重視。根據腳本類型、在 Explorer 的位置以及運行上下文,腳本的行為可能會有很大不同。某些方法調用可能會失敗,您遊戲中的物件可能無法訪問,或者腳本可能根本不會運行。
這種複雜性的原因在於,Roblox 遊戲默認為多人遊戲。腳本需要具備僅在伺服器上運行、僅在客戶端運行或在兩者之間共享的能力。隨著 Roblox 平台隨時間的演變,情況變得更加複雜。
腳本類型
Roblox 有三種類型的腳本:
- Script - 根據其位置和 Script.RunContext 屬性運行於伺服器或客戶端的代碼。
- LocalScript - 僅在客戶端運行的代碼。沒有運行上下文。
- ModuleScript - 您可以在其他腳本中重用的代碼。沒有運行上下文。
當您創建 Script 時,其默認的運行上下文為 Legacy,這意味著它 a) 是伺服器端腳本,並且 b) 只有在伺服器容器中(例如 Workspace 或 ServerScriptService)時才會運行。
- 如果您將腳本的運行上下文更改為 Server,它現在也可以在 ReplicatedStorage 中運行,但不建議這樣做。該位置的內容會複製到客戶端,因此它不適合伺服器端腳本。
- 如果您將腳本的運行上下文更改為 Client,它可以在 ReplicatedStorage 中運行。它也可以在 StarterCharacterScripts 和 StarterPlayerScripts 中運行。但是,啟動容器會複製到客戶端,因此原始腳本 和 複製品都會運行,這是不可取的。
要更改腳本的運行上下文,請在 Explorer 中選擇它,然後在 Properties 窗口中更改值。

建議
將客戶端腳本放入 ReplicatedStorage,運行上下文為 Client,以及僅為客戶端的 ModuleScripts。
在 Studio 中除錯時,您可以在 Output 窗口中點擊行,然後跳轉到 ReplicatedStorage.YourScript(腳本的穩定位置),而不是 Players.YourName.PlayerScripts.YourScript(在運行時複製到的短暫位置)。
將伺服器腳本放入 ServerScriptService,運行上下文為 Server,以及僅為伺服器的 ModuleScripts。
要在伺服器和客戶端腳本之間共享代碼,請使用 ModuleScripts 在 ReplicatedStorage 中。
將最少數量的客戶端腳本(如加載腳本)放入 ReplicatedFirst,運行上下文為 Client。要了解更多,請參見 Replication order。
在 StarterCharacterScripts、StarterPlayerScripts、StarterGui 和 StarterPack 中使用 LocalScripts。
腳本位置
| Location | Description |
|---|---|
| Workspace | 代表遊戲的 3D 世界。這個位置非常適合直接附加到物件並控制其行為的伺服器腳本。 |
| ReplicatedFirst | 包含在其他任何物件之前複製到客戶端的物件。這個位置非常適合顯示載入畫面所需的最少物件和客戶端腳本。 |
| ReplicatedStorage | 包含複製到客戶端和伺服器的物件。這個位置非常適合您想在伺服器和客戶端上使用的 ModuleScripts。 LocalScripts 不會從此位置執行,但具有 RunContext 為 Client 的 Scripts 會執行。 |
| ServerScriptService | 包含伺服器腳本。這個位置非常適合需要訪問伺服器端功能或物件的腳本,例如遊戲邏輯和雲端儲存。 |
| ServerStorage | 包含伺服器端物件。這個位置非常適合不需要在玩家加入遊戲時立即複製到客戶端的大型物件。腳本不會從此位置執行,但您可以在這裡存儲伺服器端的 ModuleScripts。 |
| StarterPlayer ⟩ StarterCharacterScripts | 包含角色生成時執行的 LocalScripts。 |
| StarterPlayer ⟩ StarterPlayerScripts | 包含玩家加入遊戲時執行的一般用途的 LocalScripts。 |
| StarterGui | 包含客戶端在載入遊戲時顯示的 GUI 元素。 LocalScripts 可以從此位置執行。這個位置非常適合修改遊戲使用者介面的腳本,例如添加按鈕、菜單和彈出視窗。 |
| StarterPack | 通常僅包含 Tools,但也可以包括用於設置玩家背包的 LocalScripts。 |
此圖顯示了哪些 Explorer 窗口位置可以包含客戶端腳本。請記住,ReplicatedFirst 和 ReplicatedStorage 可以包含 Scripts,其 RunContext 為 Client,而 Starter[] 容器則應使用 LocalScripts。

範例專案結構
Plant 參考專案展示了在大型複雜遊戲中如何組織您的代碼。
值得注意的是,它將大部分代碼存儲為在 ReplicatedStorage 和 ServerStorage 中可重用的 ModuleScripts。