每個地方都由資料模型表示,這是描述該空間方所有內容的對象的階層。資料模型包含構成 3D 世界的所有對象,例如零件、地形、照明和其他環境元素。它還包含可以控制運行時行為的對象,例如修改屬性的訂閱者,呼叫方法和函數,並且對啟用動態行為和交互性的事件進行回應。
Roblox 引擎使用資料模型作為空間點狀態的真實來源, so it 可以在客戶端設備上模擬和渲染它。有關 Roblox 引擎如何解釋資料模型的更多資訊,請參閱 客戶端-伺服器執行時間。
對象
您在Roblox中描述一個地方的方法包括兩個方法:第一個方法是將對象放置在資料模型中,描述Roblox中的一個地方;第二個方法是將對象組織在一起,描述所有對象共有的一些一般特性、方法和事件。對
對於 Roblox 引擎的所有功能的完整列表,請參閱引用文件。
3D 建造方塊
BasePart 是世界上物理模擬 3D 建築塊的核心類。它定義了所有物理對象的屬性和方法,例如位置、大小和方向。
對象 | 說明 |
---|---|
Part | 一個原始的 零件 可以以方磚塊、球、圓柱、楔楔形或角楔形的形狀來取得。 |
MeshPart | 從 Maya 或 Blender 等 3D 建模軟件中匯入 mesh 網格。 |
TrussPart | 一個可以讓角色像梯子一樣爬上的桿子。 |
雖然從理論上講,您使用只有簡單零件即可創建功能齐全的 Roblox 體驗,但您很可能會匯入網格並在固體建模中結合原始零件組成更復雜的對象和結構。
腳本
您可以在空間方的 3D 世界中增加交互性和行為,並使用指令碼定義規則。 您使用 Lua 程式語言來編寫指令碼,以便執行移動零件、呼叫其他指令碼和回應事件。因為 Roblox 運行在客戶端-伺服器模型中,您可以在服務器、客戶端上執行指令碼,或者讓它們通過網路邊界傳輸。
- Class.Script 對象代表只能在服務伺服器上執行的指令碼。
- Class.LocalScript 對象代表只能在客戶端執行的指令碼。
- 一個 ModuleScript 對象代表一個可重用的指令碼,你可以 require() 從伺服器和客戶端指令碼。
要使指令碼正常運行,您必須將它們放置在資料模型中的正確容器中。有關更多資訊,請參閱服務器和客戶端部分。
對象組織
雖然您在組織資料模型的方式上有很大的彈性,但 Roblox 引擎期望某些對象位於某些 容器服務 中,這些對象具有特定行為並且可以影響它們所包含的對象的行為。 集裝箱服務的主要類別包括:
- 工作區 - Workspace 存儲在 3D 世界中渲染的所有物件。
此外,您可以使用以下對象進一步組織您的對象:
- 文件夾 - 一個 Folder 是為了組織目的,不定義任何行為。例如,您可以使用文件夾來群組類似對象,例如一個服務器存儲的 指令碼組。
- 模型 - 一個 Model 主要用於部件的幾何分組,例如將包括椅子、桌子和燈的辦公桌組合在一起。 要組織更復雜的集合,您甚至可以在模型中嵌套模型。
工作區域
Workspace 包含所有組成位置 3D 世界的物件。您可以將對象添加到工作區來自訂您的 3D 空間界,例如基本零件、網格零件和模型。客戶端會在此
相機
Camera 決定客戶端如何檢視3D世界。 預設情況下,工作區只有一台攝影機,但您可以添加多個攝影機對象來創建不同的觀點和視圖。每個客戶端都使用這些設置並創建自己的攝影機視圖,服務器無法直接修改。
舉例來說,您可以將相機設定為跟隨用戶移動或保持在特定位置。你還可以調整檢視野、距離和角度,以創建用戶觀看 3D 世界的不同視覺效果。
了解有關更多資訊,請參閱自訂相機。
地形
Terrain 讓您為您的位空間創建景觀。您可以將材料應用於地形,模擬所需的自然環境,例如草、水、沙或自訂材料。雖然您只能為您的3D世界設置一個地形對象,並且只能將一種材料應用於此地形,但您可以使用地形編輯器來編
了解更多資訊,請參閱 環境地形。
環境
照明和音效可以讓您的 3D 世界變得更具身临其境。雖然不是必要要將這些效果添加到您的空間置,但它們可以讓它更具視覺和聽覺上的吸引力。
照明
Lighting 包含控制您空間方全球照明設定的對象,例如 Atmosphere 模擬大氣效果或 Sky 改變您環境中的太陽、月亮和星星。
了解更多資訊,請參閱 照明 。
聲音
SoundService 可以控制子 Sound 對象的音量和播放設定,用於背景音樂或環境音效。
了解更多資訊,請參閱 聲音 。
重複
複製 是服務器將您所在位置的狀態與所有連接的客戶端同步的過程。 對於許多情況,Roblox 引擎會自動在服務器和客戶端之間複製資料、物理和聊天訊息,但您也可以指定要複製的某些對象,例如將某些容器放置在特定位置。
ReplicatedFirst
ReplicatedFirst 包含您想要在客戶端加入您的位空間時複製的對象。它通常包含初始化玩家所必需的對象,例如客戶端 LocalScript 對象和與指令碼相關的對象。此容器中的所有內容僅從服務器複製到客戶端一次。
ReplicatedStorage
ReplicatedStorage 包含可用於服務器和連接的客戶端的對象。任何
了解複製如何運作的更多資訊,請參閱 客戶端-伺服器執行時間。
伺服器
資料模型為僅專用於服務器的對象定義了專用的容器,這些對象永遠不會複製到客戶端。這允許服務器影響客戶伺服器的行為和狀態,而不會將服務器的對象和論理暴露給客戶端。
服務器指令服務
ServerScriptService 包含 Script 對象, ModuleScript 服務器指令所需的對象, 和其他僅供服務器使用的 script 相關對象。如果您的 script 需要其他非 script 對象, 您必須將它們放置在
服務器存儲
ServerStorage 包含僅供服務器使用的對象。您可以使用此容器來儲存您想要複製並親級的對象,並在執行階段時將其移動到工作區或其他容器。例如您可以在此容器中儲存大型對象,例如地圖,直到需要它們,並且僅在需要時將它們移動到工作區。這允許您減少客戶端網路流量,並且僅
客戶
客戶端容器服務適用於復製到每個連接的客戶端的對象。 此類容器會復製到每個連接的客戶端,並且通常包含 3D 對象和關聯的 LocalScript。 您存儲在這些容器中的所有對象在會話中都不是持久的,並且每次客戶端重新加入時都會重置
當客戶機連接到服務伺服器時,Players 容器服務列聽取您加入您位置的用戶,並為每個客戶機建立一個 Player 物件象。服務器將從編輯資料模型中的客戶機容器中的對象複製到 Class.Players
編輯資料模型 | 時間資料模型 | 注意 |
---|---|---|
StarterPack | 玩家背包 | 設置玩家道具欄的指令碼,通常包含 Tool 個對象,但通常也包含本地指令碼。 |
StarterGui | Player.PlayerGui | 可以管理玩家本地 GUI 的腳本。當玩家重生時,PlayerGui 的內容將被清空。服務器將 StarterGui 中的對象複製到 PlayerGui。 |
StarterPlayerScripts | Player.PlayerScripts | 客戶端的一般用途指令碼。例如,如果您想在客戶端上在特定條件下創建特殊效果,您可以在此容器中放置一個本地指令碼來執行此操作。服務器無法存取此容器。 |
StarterCharacterScripts | Player.Character | 在玩家生成時複製到客戶端的指令碼。這些指令碼不會在玩家重生後保持存在。 |
ReplicatedFirst | 此容器的內容首先複製給所有客戶(但不會返回到服務伺服器),然後再複製給任何其他客戶。 |
聊天
文字聊天服務
TextChatService 代表處理各種經驗文字聊天任務,例如管理頻道、裝飾訊息、過濾文字、創建指令和開發自訂聊天界面的服務。
了解更多資訊,請參閱 體驗內容聊天系統。
語音聊天服務
VoiceChatService 代表基於接近度的語音聊天功能,根據您與其他用戶的距離來模擬現實的通信。您可以使用此服務來啟動或關閉該功能。
了解更多資訊,請參閱 語音聊天 。
文件夾和模型
有兩種主要方法可以在資料模型中對對象進行分組:文件夹和模型 。 兩者都是對對象的容器,但用途不同。
- 文件夾 最適合存儲環境的區域,例如大廳或戰鬥競技場。
- 模型 用於對象集,例如包含椅子、桌子和燈的桌子集。要組織更復雜的集合,請將模型叢在模型中。
你應該總是描述性地命名你的物件。這使得以後在需要時很容易找到和修改物件。