数据模型

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处


每个地方由一个数据模型表示,这是一个描述该地方所有内容的对象层次结构。数据模型包含构成三维世界的所有对象,如部件、地形、照明和其他环境元素。它还包含可以控制运行时行为的对象,如修改属性、调用方法和函数以及响应事件的脚本,从而实现动态行为和互动性。

Roblox引擎使用数据模型作为地方状态的真实来源,以便在客户端设备上模拟和渲染它。有关Roblox引擎如何解释数据模型的更多信息,请参见 客户端-服务器运行时

对象


您在数据模型中放置和组织对象,以描述Roblox中的地方。Roblox中的每个对象都继承自 Instance 类,该类定义了所有对象共有的通用属性、方法和事件。对象还根据其提供的功能定义自己的特性。有许多类别的对象,具有广泛的用途,但您将经常使用 BasePartLuaSourceContainer 对象,通常称为部件和脚本。

有关Roblox引擎所有功能的综合列表,请参见 参考文档

3D 建筑块

BasePart 是在世界中进行物理模拟的3D建筑块的核心类。它定义了所有物理对象的属性和方法,共享属性如位置、大小和方向。

对象描述
Part一个原始的 部件,可以呈现为方块、球体、圆柱体、楔子或角楔的形状。
MeshPart从3D建模软件(如Maya或Blender)导入的 网格
TrussPart一个构架梁,可以被角色像梯子一样攀爬。

虽然从理论上讲,您可以仅用简单的部件创建一个完全功能的Roblox游戏,但您最可能导入 网格 并通过 实体建模 将原始部件组合成更复杂的对象和结构。

脚本

您可以使用脚本为地方的3D世界添加互动性和行为,并定义逻辑。您使用Luau编程语言编写脚本,以执行诸如移动部件、调用其他脚本和响应事件等操作。由于Roblox使用客户端-服务器模型,您可以在服务器上、客户端上运行脚本,或让它们跨网络边界进行通信。

  • Script 对象表示只能在服务器上运行的脚本。
  • LocalScript 对象表示只能在客户端上运行的脚本。
  • ModuleScript 对象表示可重用的脚本,您可以从服务器和客户端脚本中 require()

为了使脚本正常工作,您必须将它们放置在数据模型中的正确容器中。有关更多信息,请参见 服务器客户端 部分。

对象组织

虽然您在组织数据模型时有很多灵活性,但Roblox引擎期望某些对象位于特定的 容器服务 中,这些对象具有特定的行为,且可以影响其包含对象的行为。容器服务的主要类别包括:

此外,您还可以通过以下对象进一步组织您的对象:

  • 文件夹Folder 用于组织目的,不定义任何行为。例如,您可以使用文件夹将类似的对象分组,比如在服务器存储中的一组脚本。
  • 模型Model 主要用于将部件进行几何分组,例如将包含椅子、桌子和台灯的书桌组合在一起。为了组织更复杂的集合,您甚至可以将模型嵌套在模型内。

工作区

Workspace 包含构成地方3D世界的所有对象。您可以向工作区添加对象以自定义您的3D世界,例如基础部件、网格部件和模型。客户端会渲染此容器中出现的所有内容,而不会渲染其外部的内容,因此您可以控制用户在地方中看到和交互的内容。尽管实际上不会呈现,您也可以添加与它们相关联的部件和模型的脚本。默认情况下,工作区预先填充了 TerrainCamera 对象。

相机

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 对象内部运行时数据模型中的相应位置。以下表格描述了它们在容器中所在的原始容器以及它们在客户端被复制到的结果容器:

编辑数据模型运行时数据模型备注
StarterPackPlayer.Backpack设置玩家库存的脚本,通常包含 Tool 对象,但通常也包含本地脚本。
StarterGuiPlayer.PlayerGui可以管理玩家本地GUI的脚本。当玩家重生时,PlayerGui的内容会被清空。服务器将StarterGui中的对象复制到PlayerGui中。
StarterPlayerScriptsPlayer.PlayerScripts客户端的通用脚本。例如,如果您想在客户端创建特殊效果,当满足某些条件时,您可以在此容器中放置本地脚本来实现。这一容器不被服务器访问。
StarterCharacterScriptsPlayer.Character在玩家生成时复制到客户端的脚本。这些脚本在玩家重生时不会持久。
ReplicatedFirst此容器的内容首先被复制到所有客户端(但不会复制回服务器),然后才是其他内容。

聊天

TextChatService

TextChatService 代表处理各种游戏内文字聊天任务的服务,例如管理频道、装饰消息、过滤文本、创建命令和开发自定义聊天界面。

有关更多信息,请参见 文本聊天概述

VoiceChatService

VoiceChatService 代表基于接近度的语音聊天功能,根据您与其他用户的距离模拟真实通信。您可以使用此服务来切换该功能的开启和关闭。

有关更多信息,请参见 语音聊天

文件夹和模型

在数据模型中,有两种主要方法用于分组对象:文件夹模型。两者都是对象的容器,但目的不同。

  • 文件夹 最适合存储环境的部分,例如大厅或战斗竞技场。
  • 模型 用于对象的集合,比如包含椅子、桌子和台灯的书桌集合。为了组织更复杂的集合,将模型嵌套在模型内部。

您应该始终对对象进行描述性命名。这使得在需要时更容易找到和修改对象。

资源管理器窗口,演示文件夹组织结构。
对象组织到 文件夹
资源管理器窗口,演示多个服务中的模型组织结构。
各种“地图”模型以便在 WorkspaceServerStorage 之间切换
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。