腳本類型和位置

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡


對於許多開發者來說,適應 Roblox 腳本的基本挑戰在於檔案位置和 Script.RunContext 屬性的重視。根據腳本類型、在 Explorer 的位置以及運行上下文,腳本的行為可能會有很大不同。某些方法調用可能會失敗,您遊戲中的物件可能無法訪問,或者腳本可能根本不會運行。

這種複雜性的原因在於,Roblox 遊戲默認為多人遊戲。腳本需要具備僅在伺服器上運行、僅在客戶端運行或在兩者之間共享的能力。隨著 Roblox 平台隨時間的演變,情況變得更加複雜。

腳本類型

Roblox 有三種類型的腳本:

  • Script - 根據其位置和 Script.RunContext 屬性運行於伺服器或客戶端的代碼。
  • LocalScript - 僅在客戶端運行的代碼。沒有運行上下文。
  • ModuleScript - 您可以在其他腳本中重用的代碼。沒有運行上下文。

當您創建 Script 時,其默認的運行上下文為 Legacy,這意味著它 a) 是伺服器端腳本,並且 b) 只有在伺服器容器中(例如 WorkspaceServerScriptService)時才會運行。

  • 如果您將腳本的運行上下文更改為 Server,它現在也可以在 ReplicatedStorage 中運行,但不建議這樣做。該位置的內容會複製到客戶端,因此它不適合伺服器端腳本。
  • 如果您將腳本的運行上下文更改為 Client,它可以在 ReplicatedStorage 中運行。它也可以在 StarterCharacterScriptsStarterPlayerScripts 中運行。但是,啟動容器會複製到客戶端,因此原始腳本 複製品都會運行,這是不可取的。

要更改腳本的運行上下文,請在 Explorer 中選擇它,然後在 Properties 窗口中更改值。

指示腳本的 RunContext 屬性。

建議

  • 將客戶端腳本放入 ReplicatedStorage,運行上下文為 Client,以及僅為客戶端的 ModuleScripts

    在 Studio 中除錯時,您可以在 Output 窗口中點擊行,然後跳轉到 ReplicatedStorage.YourScript(腳本的穩定位置),而不是 Players.YourName.PlayerScripts.YourScript(在運行時複製到的短暫位置)。

  • 將伺服器腳本放入 ServerScriptService,運行上下文為 Server,以及僅為伺服器的 ModuleScripts

  • 要在伺服器和客戶端腳本之間共享代碼,請使用 ModuleScriptsReplicatedStorage 中。

  • 如果您將腳本放在 模型 中,則需要為每個腳本指定一個 RunContext,以消除其運行方式的模糊性。顯式設置此屬性使得模型和包在各種位置正常運行的可能性更大。

  • 將最少數量的客戶端腳本(如加載腳本)放入 ReplicatedFirst,運行上下文為 Client。要了解更多,請參見 Replication order

  • StarterCharacterScriptsStarterPlayerScriptsStarterGuiStarterPack 中使用 LocalScripts

腳本位置

LocationDescription
Workspace代表遊戲的 3D 世界。這個位置非常適合直接附加到物件並控制其行為的伺服器腳本。
ReplicatedFirst包含在其他任何物件之前複製到客戶端的物件。這個位置非常適合顯示載入畫面所需的最少物件和客戶端腳本。
ReplicatedStorage包含複製到客戶端和伺服器的物件。這個位置非常適合您想在伺服器和客戶端上使用的 ModuleScriptsLocalScripts 不會從此位置執行,但具有 RunContextClientScripts 會執行。
ServerScriptService包含伺服器腳本。這個位置非常適合需要訪問伺服器端功能或物件的腳本,例如遊戲邏輯和雲端儲存。
ServerStorage包含伺服器端物件。這個位置非常適合不需要在玩家加入遊戲時立即複製到客戶端的大型物件。腳本不會從此位置執行,但您可以在這裡存儲伺服器端的 ModuleScripts
StarterPlayerStarterCharacterScripts包含角色生成時執行的 LocalScripts
StarterPlayerStarterPlayerScripts包含玩家加入遊戲時執行的一般用途的 LocalScripts
StarterGui包含客戶端在載入遊戲時顯示的 GUI 元素。 LocalScripts 可以從此位置執行。這個位置非常適合修改遊戲使用者介面的腳本,例如添加按鈕、菜單和彈出視窗。
StarterPack通常僅包含 Tools,但也可以包括用於設置玩家背包的 LocalScripts

此圖顯示了哪些 Explorer 窗口位置可以包含客戶端腳本。請記住,ReplicatedFirstReplicatedStorage 可以包含 Scripts,其 RunContextClient,而 Starter[] 容器則應使用 LocalScripts

圖示顯示哪些腳本位置在客戶端運行。

範例專案結構

Plant 參考專案展示了在大型複雜遊戲中如何組織您的代碼。

值得注意的是,它將大部分代碼存儲為在 ReplicatedStorageServerStorage 中可重用的 ModuleScripts

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。