在 重複代碼 中,您可能已經注意到頻繁使用 game:GetService() 方法。Roblox 服務讓您存取引擎內置功能,例如出售體驗內物品、啟用聊天、播放聲音、動畫對象和管理實例。
事實上,服務是 Roblox 開發最基本、最常見模式的第一步 :
- 取得服務。
- 需要模組腳本。
- 添加本地功能。
- 添加會觸發這些功能的事件。
例如,您可能想在玩家離開體驗時保存他們在世界上的位置:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- 在模組腳指令碼中呼叫可重複使用的功能的本地功能。
local function saveProgress(character)
-- 取得玩家角色的位置。
local position = character:FindFirstChild("HumanoidRootPart").Position
-- 使用模組腳指令碼中的 saveData 功能,寫入
-- 數據儲存服務。
SaveManager.saveData(character, position)
end
-- 當字元被移除時呼叫 saveProgress() 的另一個本地功能
-- 從體驗 (在這個情況下,當玩家離開時)。
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- 當玩家首次連接到體驗時,呼叫 onPlayerAdded。
Players.PlayerAdded:Connect(onPlayerAdded)
一些關鍵細節包括:
- 因為你只能每次寫入一次指令碼務,因此慣例是給變量與服務相同的名稱。這個慣例也適用於模組腳本。
- 您使用全球變量 game 來取得服務,這是指向數據模型根的參考。
- Roblox 不會對載入順序提供保證(和 實例傳播 進一步複雜化了在任何時間載入的內容),因此使用 Instance:WaitForChild() 是一個重要的安全措施。
而不是比較 標準圖形庫 、全球功能和變量 或第三方圖形庫,Roblox 開發的大部分是確定哪些眾多服務可以幫助您將所需的功能添加到體驗中。在上面的例子中,您不使用標準的輸入/輸出庫寫入磁碟,而是使用 雲端服務 來儲存數據。
容器服務
容器服務可以包含和影響其他對象。這些容器服務位於數據模型的根並在 Studio 的導航視窗中可見。總體而言,這些容器服務形成了數據模型的結構化層次,因此 Roblox 引擎可以正確解釋和渲染您的空間。下表包括一些常見的容器服務。
服務 | 說明 :--- | :--- Workspace | 包含所有在 3D 世界中渲染的對象,例如零件和地形。Lighting|包含用於設置通用照明效果的對象,例如Atmosphere和Sky。ReplicatedStorage 和 ReplicatedFirst | 包含在服務器和客戶端之間複製的內容和邏輯。
若要進一步檢查數據模型,您可以使用這些方法:
- game:FindService() 搜尋指定服務的實例。
- game:GetChildren() 返回數據模型的所有根兒子數組,這些是最高級容器服務。
- game:GetDescendants() 返回數組所有數據模型的子孫,包括所有容器服務和其子孫。
有關容器服務的更多資訊,請參閱資料模型文件。
腳本服務
腳本服務在 Roblox 引擎中提供標準功能,您可以在腳本中呼叫。下表包括一些常見的腳本服務。
服務 | 說明 :--- | :--- TweenService | 用於從開始到結束值中插入其他實例的數字屬性,並提供緩和方向和風格、重複和延遲選項。MarketplaceService|負責在體驗中進行交易的服務,例如提示玩家購買開發者產品、訂閱或遊戲通行特權證,升級到Roblox Premium等ContextActionService | 允許您將使用者輸入,例如按下鍵、觸碰螢輕觸或控制器按鈕與上下文行動綁定,例如當使用者進入或離開汽車時修改控制。RunService|包含用於框架間時間管理的方法和事件以及檢查體驗運行的上下文(服務器、客戶端、Studio模式)。對於在每個運行時框架上執行任何過程或更新有用。SoundService | 控制體驗中音頻播放的各種全球方面,例如噪聲比率和音量音頻。也可以包含聲音群來控制多個音頻信號的音訊量和動態效果屬性。CollectionService | 管理從伺服器複製到客戶端的標籤標示的實例群組(收集),讓您更容易分配和工作與相關實例群組。
雲端服務
Roblox 也有專門用於處理 Roblox 雲端中發生的任務和過程的雲端服務。下表包括一些常見的雲端服務。
服務 | 說明 :--- | :--- DataStoreService | 用於存儲會話之間的持久數據。MemoryStoreService|用於儲存經常變化和短暫的數據。MessagingService
雲端服務也有相應的網路 API;它們可以從外部腳本或工具存取。有關更多資訊,請參閱 開啟雲端 。