每個地方都由一個數據模型來表示,這是一個描述該空間方所有內容的對象階層。數據模型包含構成 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世界中渲染的所有對象。
此外,您可以使用以下對象進一步組織您的對象:
- 文件夾 - A Folder 是用於組織目的,不定義任何行為。例如,您可以使用文件夾來組織相似的對象,例如在伺服器儲存中的一組腳本。
- 模型 - A Model 主要用於部件的幾何分組,例如將包括椅子、桌子和燈的辦公桌組合在一起。若要組織更複雜的集合,您甚至可以在模型中巢穴化模型。
工作區
Workspace 包含構成位置 3D 世界的所有對象。您可以將物件添加到工作區以自定義您的 3D 世界,例如基本零件、網格零件和模型。客戶端渲染這個容器中出現的所有內容和外面的沒有什麼,因此您可以控制用戶在您的位空間看到和互動的內容。雖然不實際渲染,但您也可以添加與零件和模型相關的腳本。預設情況下,工作區會預先填充 Terrain 和 Camera 對象。
相機
Camera 決定客戶端如何查看 3D 世界。預設情況下,工作區內有一台相機,但您可以添加多個相機對象來創建不同的視角和觀點。每個客戶端會取得這些設定並創建自己的相機視圖,伺服器無法直接修改。
例如,您可以將相機設為跟隨使用者移動或固定在特定位置。您也可以調整檢視野、距離和角度,創建不同的視覺效果,讓使用者查看您的 3D 世界。
了解更多信息,請參閱自訂相機。
地形
Terrain 讓你為你的空間方創建景觀。您可以將材料應用於地形,模擬所需的自然環境,例如草、水、沙或自訂材料。雖然您只能為您的3D世界設置一個地形對象並將一種材料應用於該地形,但您可以使用 地形編輯器 來編輯您的地形區域。
了解更多信息,請參閱環境地形。
環境
燈光和聲音效果可以讓你的 3D 世界更具沉浸感和真實感。雖然不需要將這些效果添加到你的空間,但它們可以使它更具視覺和聽覺上的吸引力。
照明
Lighting 包含控制您空間方全球照明設置的對象,例如 Atmosphere 模擬大氣效果或 Sky 改變您環境中的太陽、月亮和星星。
了解更多信息,請參閱燈光。
聲音
SoundService 可以控制子對象 Sound 的音量和播放設置,用於背景音樂或環境音效。
了解更多信息,請參閱聲音。
複製
複製 是伺服器與所有連線的客戶同步你位置狀態的過程。Roblox 引擎會在許多情況下智慧地自動複製服務器和客戶端之間的數據、物理和聊天訊息,但您也可以指定特定對象進行複製,將它們放置在特定容器中。
複製第一
ReplicatedFirst 包含您想要在客戶端加入您的空間時複製的對象。通常包含初始化玩家所需的對象,例如客戶端 LocalScript 對象和與腳本相關的對象。此容器中的所有內容只從服務器複製到客戶端一次。
複製儲存
ReplicatedStorage 包含可供伺服器和連線的客戶端兩者使用的對象。發生在客戶端的任何變更都會持續存在,但不會複製到服務器。伺服器可以覆蓋客戶端上的變更,以保持一致性。此容器通常用於需要共享並由 (服務器端) 和 (客戶端) 對象共同存取的 對象。此外,您可以使用此容器來複製任何不需要在 3D 世界中存在直到需要時才需要存在的對象,例如 ParticleEmitter 用於克隆和照顧所有收到的角色模型。
要了解複製如何運作的更多資訊,請參閱客戶端-伺服器運行時。
服務器
數據模型為僅用於服務器端的對象定義專用容器,這些對象永遠不會複製到客戶端。這樣可以讓服務器影響客戶伺服器的行為和狀態,而不需要將服務器的對象和邏輯暴露給客戶端。
伺服器腳本服務
ServerScriptService 包含 Script 個對象、ModuleScript 個服務器腳本所需的對象和只供服務器使用的其他腳本相關對象。如果您的腳本需要其他非腳本對象,您必須將它們放置在 ServerStorage 中。此容器中的腳本永遠不會複製到客戶端,這樣您就可以擁有安全的服務器側邏輯。
伺服器儲存
ServerStorage 包含只供伺服器使用的對象。您可以使用此容器來儲存想要複製並傳給工作區或其他容器運執行階段時的對象。例如,您可以將地圖等大型對象存儲在此容器中,直到需要它們才移動到工作區,這樣可以讓您在初次加入時減少客戶端網絡流量。
客戶
客戶端容器服務適用於複製到每個連接的客戶端的對象。這類容器會複製到每個連接的客戶端,通常包含 3D 物件和相關的 LocalScript 物件。所有你在這些容器中儲存的對象都不會在會話之間保持不變,每次客戶重新加入時都會重置。您可以將對象放入這些容器,例如玩家介面、客戶端腳本和只與客戶端相關的其他對象。
當客戶端連接到伺服器時, Players 容器服務聆聽加入你位置的用戶並創建每個客戶端的 Player 對象。伺服器將編輯數據模型中的客戶端容器中的對象複製到對應位置的運行時數據模型內的 Players 對物件。下表描述了容器中的原始容器以及容器中複製到客戶端的結果容器:
編輯資料模型 | 運行時資料模型 | 注意事項 |
---|---|---|
StarterPack | 玩家.背包 | 設置玩家庫存的腳本,通常包含 Tool 個對象,但通常也包含本地腳本。 |
StarterGui | 玩家.PlayerGui | 可以管理玩家本地 GUI 的腳本。當玩家重生時,PlayerGui 的內容將被清空。伺服器將 StarterGui 內的對象複製到 PlayerGui。 |
StarterPlayerScripts | 玩家.PlayerScripts | 客戶端的一般用途腳本。例如,如果您想在特定條件下在客戶端上創建特殊效果,您可以將本地腳本放置在此容器中來執行此操作。伺服器無法存取此容器。 |
StarterCharacterScripts | 玩家。角色 | 在生成時複製到客戶端的腳本。這些腳本在玩家重生時不會持續存在。 |
ReplicatedFirst | 此容器的內容首先複製到所有客戶端(但不會返回到服務伺服器),然後再複製到任何其他地方。 |
聊天
文字聊天服務
TextChatService 代表處理各種經驗文字聊天任務的服務,例如管理通道、裝飾訊息、過濾文字、創建指令和開發自定義聊天介面。
欲了解更多信息,請參閱體驗內的文字聊天系統。
音訊聊天服務
VoiceChatService 代表基於接近度的語音聊天功能,根據您與其他使用者的距離來模擬現實的通訊。您可以使用此服務來切換特性的開啟和關閉。
了解更多信息,請參閱語音聊天。
文件夾和模型
資料模型中對物件進行分組的主要方法有兩種: 文件夾 和 模型 。兩者都是對象容器,但目的不同。
- 文件夾 最適合儲存環境的部分,例如大廳或戰鬥競技場。
- 模型 用於對象組,例如包含椅子、桌子和燈的桌子組。要組織更複雜的集合,將巢穴模型納入模型中。
你應該總是用描述性的名稱命名你的對象。這樣可以讓以後找到和修改對象變得容易。

