每個地方由一個數據模型表示,這是一個描述該地點所有內容的對象層級結構。數據模型包含構成 3D 世界的所有對象,如部分、地形、照明以及其他環境元素。它還包含可以控制運行時行為的對象,例如修改屬性、調用方法和函數的腳本,以及響應事件以啟用動態行為和交互性。
Roblox 引擎使用數據模型作為地方狀態的真實來源,因此可以在客戶端設備上模擬和渲染它。欲了解 Roblox 引擎如何解釋數據模型的更多信息,請參見 客戶端-伺服器運行時。
對象
您在數據模型中放置和組織對象,以描述 Roblox 中的地方。每個 Roblox 對象都繼承自 Instance 類,該類定義所有對象共有的屬性、方法和事件。對象還根據其提供的功能定義自己的特徵。有許多類別的對象具有各種用法,但您經常會使用 BasePart 和 LuaSourceContainer 對象,通常稱為部分和腳本。
有關 Roblox 引擎所有功能的全面列表,請參見 參考文檔。
3D 建築模塊
BasePart 是世界中物理模擬的 3D 建築模塊的核心類。它定義了所有物理對象的共通屬性和方法,例如位置、大小和方向。
| 對象 | 描述 |
|---|---|
| Part | 一個原始的 部分,可以呈現成方塊、球體、圓柱、楔形或角楔的形狀。 |
| MeshPart | 從 Maya 或 Blender 等 3D 建模軟件導入的 網格。 |
| TrussPart | 一個角色可以像爬梯子一樣攀爬的桁架樑。 |
雖然理論上您可以僅使用簡單的部分創建一個完全可運行的 Roblox 遊戲,但您最有可能導入 網格,並通過 固體建模 將原始部分組合成更複雜的對象和結構。
腳本
您可以通過腳本為您地方的 3D 世界添加互動性和行為,並定義邏輯。您使用 Luau 編程語言編寫腳本以執行如移動部分、調用其他腳本和響應事件等任務。由於 Roblox 在客戶端-伺服器模型中工作,您可以在伺服器、客戶端上運行腳本,或讓它們穿越網絡邊界進行通信。
- Script 對象表示只能在伺服器上運行的腳本。
- LocalScript 對象表示只能在客戶端上運行的腳本。
- ModuleScript 對象表示可重用的腳本,您可以從伺服器和客戶端腳本中使用 require()。
為了讓腳本正確運行,您必須將它們放置在數據模型中的正確容器中。欲了解更多信息,請參見 伺服器 和 客戶端 部分。
對象組織
雖然您可以靈活地組織數據模型,但 Roblox 引擎期望某些對象在特定的 容器服務 中,這些對象具有特定的行為,並且可以影響它們包含對象的行為。容器服務的主要類別包括:
- 工作區 — Workspace 存儲所有在 3D 世界中渲染的對象。
此外,您可以使用以下對象進一步組織您的對象:
- 文件夾 — Folder 用於組織目的,不定義任何行為。例如,您可以使用文件夾來對類似的對象進行分組,例如一組在伺服器存儲中的腳本。
- 模型 — Model 主要用於幾何部分的分組,例如將包含椅子、桌子和燈的書桌組合到一起。要組織更複雜的集合,您甚至可以在模型內嵌套模型。
工作區
Workspace 包含構成地方的 3D 世界的所有對象。您可以將對象添加到工作區以自定義您的 3D 世界,例如基本部分、網格部分和模型。客戶端渲染此容器中出現的所有內容,而不渲染其外的內容,因此您可以控制用戶在您的地方看到和互動的內容。儘管實際上不會渲染,但您也可以添加與部分和模型關聯的腳本。默認情況下,工作區預先填充有 Terrain 和 Camera 對象。
相機
Camera 決定客戶端如何查看 3D 世界。默認情況下,工作區中有一個相機,但您可以添加多個相機對象以創建不同的視角和視圖。每個客戶端採用這些設置並創建自己的相機視圖,伺服器無法直接修改。
例如,您可以設置相機跟隨用戶的動作或保持固定在特定位置。您還可以調整視野、距離和角度,以創造用戶查看 3D 世界的不同視覺效果。
欲了解更多信息,請參見 自定義相機。
地形
Terrain 允許您為您的地方創建風景。您可以為地形應用材料,以模擬所需的自然環境,例如草、水、沙或自定義材料。儘管您只能為您的 3D 世界擁有一個地形對象並為該地形應用一種材料,但您可以使用 地形編輯器 編輯地形的區域。
欲了解更多信息,請參見 環境地形。
環境
自定義照明可以讓您的 3D 世界變得更加身臨其境和真實。Lighting 服務包含控制您地方全球照明設置的對象,例如 Atmosphere 模擬大氣效果或 Sky 用於改變您環境中的太陽、月亮和星星。此外,您可以使用 光源 從特定對象發出光。
向您的遊戲中添加 音頻 對提升您的遊戲至新高度也至關重要。通過戰略性使用位置音頻和非位置音頻,您可以讓玩家沉浸在您的世界中,為他們的行為提供有用的反饋,並引導他們注意到達成目標所需的行動。
複製
複製 是伺服器與所有連接的客戶端同步您地方狀態的過程。Roblox 引擎在許多情況下智能且自動地在伺服器和客戶端之間複製數據、物理和聊天消息,但您也可以通過將某些對象放置在特定容器中來指定某些對象進行複製。
ReplicatedFirst
ReplicatedFirst 包含您希望在客戶端加入您的地方時複製的對象。它通常包含對玩家初始化至關重要的對象,例如客戶端的 LocalScript 對象以及與腳本相關的對象。此容器中的所有內容僅從伺服器複製到客戶端一次。
ReplicatedStorage
ReplicatedStorage 包含伺服器和連接的客戶端均可使用的對象。客戶端上發生的任何更改都會持久,但不會複製到伺服器。伺服器可以覆蓋客戶端的更改,以維持一致性。此容器通常用於 ModuleScript 對象,這些對象需要同時被 Script(伺服器端)和 LocalScript(客戶端)對象共享和訪問。此外,您可以使用此容器複製不需要在 3D 世界中存在的對象,直到需要為止,例如用於克隆並父子關係到所有進入角色模型的 ParticleEmitter。
欲了解更多有關複製如何工作的更多信息,請參見 客戶端-伺服器運行時。
伺服器
數據模型定義了一些僅用於伺服器端的對象的專用容器,這些對象永遠不會複製到客戶端。這使得伺服器能夠影響客戶端行為和狀態,而不暴露伺服器的對象和邏輯給客戶端。
ServerScriptService
ServerScriptService 包含 Script 對象、伺服器腳本所需的 ModuleScript 對象,以及專為伺服器使用的其他與腳本相關的對象。如果您的腳本需要其他非腳本對象,則必須將它們放置在 ServerStorage 中。此容器中的腳本永遠不會複製到客戶端,這使您能夠擁有安全的伺服器端邏輯。
ServerStorage
ServerStorage 包含僅用於伺服器使用的對象。您可以使用此容器存儲要在運行時克隆並父子關係到工作區或其他容器的對象。例如,您可以在此容器中存儲大型對象,例如地圖,直到需要時才將它們移動到工作區。這樣可以減少用戶首次進入時的客戶端網絡流量。
客戶端
客戶端容器服務是為複製到每個連接客戶端的對象而設計的。這類容器將複製到每個連接客戶端,並通常包含 3D 對象和相關的 LocalScript 對象。您存儲在這些容器中的所有對象在會話之間都是非持久的,並且每次客戶端重新加入時都會重置。您可以將對象放入這些容器中,例如玩家 GUI、客戶端腳本以及其他僅對客戶端相關的對象。
當客戶端連接到伺服器時,Players 容器服務會監聽用戶加入您的地方,並為每個客戶端創建一個 Player 對象。伺服器從編輯數據模型中的客戶端容器複製對象到 Players 對象中的運行時數據模型中相應的位置。下表描述了它在容器中所屬的原始容器以及它們在客戶端被複製到的結果容器:
| 編輯數據模型 | 運行時數據模型 | 備註 |
|---|---|---|
| StarterPack | Player.Backpack | 設置玩家庫存的腳本,通常包含 Tool 對象,但通常也包含本地腳本。 |
| StarterGui | Player.PlayerGui | 可以管理玩家本地 GUI 的腳本。當玩家重新生成時,PlayerGui 的內容會被清空。伺服器將 StarterGui 中的對象複製到 PlayerGui。 |
| StarterPlayerScripts | Player.PlayerScripts | 客戶端的通用腳本。例如,如果您希望在滿足特定條件時在客戶端創建特效,則可以將本地腳本放入此容器中。伺服器無法訪問此容器。 |
| StarterCharacterScripts | Player.Character | 玩家生成時複製到客戶端的腳本。這些腳本在玩家重新生成時不會持久。 |
| ReplicatedFirst | 此容器的內容首先複製到所有客戶端(但不會再複製回伺服器)。 |
聊天
TextChatService
TextChatService 代表處理各種遊戲內文本聊天任務的服務,例如管理渠道、裝飾消息、過濾文本、創建命令和開發自定義聊天界面。
有關更多信息,請參見 文本聊天概述。
VoiceChatService
VoiceChatService 代表基於距離的語音聊天功能,根據您與其他用戶的距離模擬現實通信。您可以使用此服務來開啟或關閉該功能。
有關更多信息,請參見 語音聊天。
文件夾和模型
在數據模型中有兩種主要方法用於將對象分組:文件夾 和 模型。兩者都是對象的容器,但用途不同。
- 文件夾 最適合用於存儲環境部分,例如大廳或戰鬥區域。
- 模型 用於一組對象,例如包含椅子、桌子和燈的書桌組。要組織更複雜的集合,請在模型內嵌套模型。
您應始終以描述性命名您的對象。這樣可以在需要時輕鬆找到和修改對象。

