每个地方都由数据模型表示,数据模型是描述该场景所有内容的对象的层次结构。数据模型包含构成 3D 世界的所有对象,例如零件、地形、照明和其他环境元素。它还包含可以控制运行时行为的对象,例如修改属性的脚本、调用方法和函数,以及对启用动态行为和交互性的事件的响应。
Roblox 引擎使用数据模型作为场景点状态的真实来源, so it 可以在客户端设备上模拟和渲染它。有关 Roblox 引擎如何解释数据模型的更多信息,请参阅 客户端-服务器运行时 。
对象
您在数据模型中放置和组织对象,描述 Roblox 中的位置。Roblox 中的每个对象都继承自 Instance 类,该类定义通用属性、方法和事件,并且对所有对象共有的。对象还根据对象提供的功能定义了自己的特
了解 Roblox 引擎的所有功能的完整列表,请参阅引用文档。
3D 积木
BasePart 是世界上物理模拟 3D 构建块的核心类。它定义了所有物理对象的属性和方法,例如位置、大小和方向。
对象 | 描述 |
---|---|
Part | 一个简单的 零件 ,可以采取砖块、球、圆柱体、楔楔形或角楔形的形状。 |
MeshPart | 从Maya 或 Blender 等 3D 建模软件中导入 mesh。 |
TrussPart | 可以让角色像梯子一样爬上的桁架。 |
虽然从理论上讲,您使用仅 单一零件即可创建功能齐全的 Roblox 体验,但您很可能会导入网格,并通过实体建模将原始部件组合成更复杂的对象和结构。
脚本
您可以在“3D 世界”中添加交互性和行为,并使用脚本定义逻辑。 您使用 Lua 编程语言写脚本来做到以下事情,例如移动零件、调用其他脚本和响应事件。 因为 Roblox 是客户端-服务器模型,因此您可以在服务器、客户端上运行脚本,或者让它们通过网络边界交流。
- 一个 Script 对象代表只能在服务器上运行的脚本。
- 一个 LocalScript 对象代表只能在客户端运行的脚本。
- 一个 ModuleScript 对象代表一个可重用的脚本,你可以从服务器和客户端脚本中通过调用 require() 来使用。
要使脚本正常运行,您必须将它们放置在数据模型中的正确容器中。有关更多信息,请参阅服务器和客户端部分。
对象组织
虽然您在组织数据模型的方式上有很大的灵活性,但 Roblox 引擎期望某些对象位于某些 容器服务 中,这些对象具有特定的行为,并且可以影响它们所包含的对象的行为。 集装箱服务的主要类别包括:
- 工工作间区 - Workspace 存储在 3D 世界中渲染的所有对象。
此外,您可以使用以下对象进一步组织您的对象:
- 文件夹 - 一个 Folder 用于组织目的,不定义任何行为。例如,您可以使用文件夹来组合类似对象,例如服务器存储中的一组脚本。
- 模型 - 一个 Model 主要用于部件的几何分组,例如将包括椅子、桌子和灯的办公桌组合在一起。 要组织更复杂的集合,您甚至可以在模型中嵌套模型。
工作区
Workspace 包含构成场景方 3D 世界的所有对象。您可以将对象添加到工作场景以自定义您的 3D 世界,例如基础部件、网格部件和模型。客户端会渲染该容器中
相机
Camera 确定客户端如何查看3D世界。默认情况下,工作区只有一个摄像头,但您可以添加多个摄像头对象来创建不同的视角和视图。每个客户端都使用这些设置并创建自己的摄像头视图,服务器无法直接修改。
例如,您可以将相机设置为跟随用户移动或固定在特定位置。你还可以调整查看野、距离和角度,以创建用户观看 3D 世界的不同视觉效果。
了解有关更多信息,请参阅自定义相机。
地形
Terrain 允许您为您的场景置创建景观。您可以将材料应用于地形,模拟所需的自然环境,例如草、水、沙子或自定义材料。虽然您只能为您的3D世界设置一个地形对象,且只能将一种材料应用于该地形,但您可以使用“地形编辑器”来编辑您的地形区域。
了解更多信息,请参阅环境地形。
环境
照明和音效可以让您的 3D 世界更具身临其境。 尽管不是必要要将这些效果添加到您的场景置,但它们可以让它更具视觉和听觉上的吸引力。
照明
Lighting 包含控制您场景方全球照明设置的对象,例如 Atmosphere 模拟大气效果或 Sky 改变您环境中的太阳、月亮和星星。
了解更多信息,请参阅照明。
声音
SoundService 可以控制子 Sound 对象的音量和播放设置,用于背景音乐或环境音效。
了解更多信息,请参阅声音。
复制
复制 是服务器将您所在位置的状态与所有连接的客户端同步的过程。 在许多情况下,Roblox 引擎会智能地自动在服务器和客户端之间复制数据、物理和聊天消息,但您也可以通过将某些对象放置在特定容器中来指定要复制的对象。
复制第一个
ReplicatedFirst 包含您想要在客户端加入您的位场景时复制的对象。它通常包含初始化玩家所必需的对象,例如客户端 LocalScript 对象和与脚本关联的对象。此容器中的所有内容仅从服务器复制到客户端一次。
复制存储空间
ReplicatedStorage 包含服务器和连接的客户端都可用的对象。客户端上发
了解有关复制如何工作的更多信息,请参阅客户端-服务器运行时。
服务器
数据模型为仅用于服务器端的对象定义了专用容器,这些对象永远不会复制到客户端。这允许服务器影响客户端的行为和状态,而不会将服务器的对象和逻辑暴露给客户端。
服务器脚本服务
ServerScriptService 包含 Script 对象, ModuleScript 个服务器脚本所需的对象,以及其他仅供服务器使用的脚本相关对象。如果您的脚本需要其他非脚本对象,您必须将它们放置在 0> Class.
服务器存储空间
ServerStorage 包含仅供服务器使用的对象。您可以使用此容器来存储您想要克隆的对象,并在运行时将其父级存储到工作区或其他容器中。例如您可以在此容器中存储大型对象直到需要它们,例如地图,并且仅在需要时将它们移动到工作区。这允许您在初始加入时减少客户端网络流量。
客户
客户端容器服务适用于复制到每个连接的客户端的对象。 此类容器复制到每个连接的客户端,通常包含 3D 对象和关联的 LocalScript 对象。 您存储在这些容器中的所有对象在会话之间都不是持久的,并且每次客户端重新加入时都会重置。 您可以将对象放入这
当客户机连接到服务器时,Players容器服务 监听加入您位置的用户,并为每个客户机创建一个Player对象。服务器将从编辑数据模型中的客户机容器中的对象复制到Players对象内部的运行时数据模型中的相应位
编辑数据模型 | 运行时数据模型 | 注释 |
---|---|---|
StarterPack | 玩家背包 | 设置玩家库存的脚本,通常包含 Tool 个对象,但通常也包含本地脚本。 |
StarterGui | Player.PlayerGui | 可以管理玩家本地 GUI 的脚本。当玩家重生时,PlayerGui 的内容将被清空。服务器将 StarterGui 中的对象复制到 PlayerGui。 |
StarterPlayerScripts | Player.PlayerScripts | 客户端的通用脚本。例如,如果您想在客户端上创建特殊效果,当满足某些条件时,您可以在此容器中放置一个本地脚本来执行此操作。服务器无法访问此容器。 |
StarterCharacterScripts | Player.Character | 在重生点时复制到客户端的脚本。当玩家重生时,这些脚本不会持续存在。 |
ReplicatedFirst | 此容器的内容首先复制到所有客户端(但不会返回到服务器),然后再复制到其他任何东西。 |
聊天
文字聊天服务
TextChatService 代表处理各种经验文本聊天任务的服务,例如管理频道、装饰消息、过滤文本、创建命令和开发自定义聊天界面。
了解更多信息,请参阅体验内嵌入式聊天系统。
语音聊天服务
VoiceChatService 代表基于接近度的语音聊天功能,根据您与其他用户的距离来模拟现实的通信。您可以使用此服务来打开或关闭该功能。
了解更多信息,请参阅语音聊天。
文件夹和模型
在数据模型中对对象进行分组有两种主要方法:文件夹和模型。 两者都是对对象的容器,但它们有不同的用途。
- 文件夹 最适合存储环境的部分,例如大厅或战斗竞技场。
- 模型 用于对象集,例如包含椅子、桌子和灯的桌子集。要组织更复杂的集合,请将模型嵌套在模型中。
你总是应该描述性地命名你的对象。这使得以后在需要时很容易找到和修改对象。