在重用代码中,您可能已经注意到了使用 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
-- 当角色被移除时,调用其他本地函数保存进度
-- 从体验(在这个例子中,当玩家离开)。
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- 调用 onPlayerAdded 当玩家首次连接到体验。
Players.PlayerAdded:Connect(onPlayerAdded)
一些关键细节包括:
- 因为您只能为脚本恢复服务一次,因此约定是给变量命名为服务。 此约定也适用于模块脚本。
- 您使用 global 变量 game ,该变量是数据模型的根。
- Roblox 不提供有关加载顺序(和 实例串流 的后续)的保证,因此使用 Instance:WaitForChild() 是重要的安全措施。
与比较 标准库存 、 全球函数和变量 或第三方库存 ,大部分 Roblox 开发都是确定哪些多种多样的服务可以帮助您将所需功能添加到您的体验。 在上面的例子中,而不是使用标准 I/O 库存写入到硬盘,您使用 云服务 存储数据。
容器服务
容器服务可以容纳和影响其他对象。 这些容器服务位于数据模型的根部分,并且在 Studio 的 Explorer 窗口中可以见到。 集合起来,这些容器服务形成数据模型的结构层次,因此 Roblox 引擎可以正确解释并渲染您的场景。 下表包括一些常见的容器服务。
服务 | 描述 :--- | :--- Workspace | 包含在 3D 世界中渲染的所有对象,例如零件和地形。 Lighting | 包含设置宇宙照明效果的
要进一步分析数据模型,您可以使用以下方法:
- game:FindService() 搜索指定服务的实例。
- game:GetChildren() 返回一个阵列所有根级别的数据模型的子女,这些是顶级容器服务。
- game:GetDescendants() 返回一个包含所有数据模型子模型和所有容器服务的子模型的阵列。
了解有关容器服务的更多信息,请参阅数据模型文档。
脚本服务
脚本服务在 Roblox 引擎中提供标准功能,您可以在脚本中调用它们。下表包括一些常见的脚本服务。
服务 | 描述:--- | :--- Class.T
云服务
Roblox 还有特殊的云服务来处理在 Roblox 云上发生的任务和过程。 以下表包括一些常见的云服务。
服务 | 描述 :--- | :--- DataStoreService | 用于存储持久数据在不同会话之间。 MemoryStoreService | 用于存储快速变更的数据。 MessagingService | 用于在多个服务器之间通信。
云服务还有相应的网页 API ;它们可以通过从外部脚本或工具访问。有关更多信息,请参阅开放云端。