gamepadRoblox

如果你曾在 Roblox 上制作过游戏,那么在开始使用 All Out 时,你需要了解一些关键差异!

如果你来自 Roblox Studio + Lua,这一页将帮助你把你的思维模型转换到 All Out + CSL(All Out 的脚本语言)。

主要区别(快速概览)

  • 实体 + 组件(不是 Instances + Services):世界由中的实体构成 层级,而行为则来自添加组件(内置或脚本编写的)。

  • 多人游戏是“内建”的:CSL 的设计目标是让大多数游戏代码可以像单机一样编写,同时引擎会同步相关状态。

  • 编辑器工作流更接近“场景编辑”:你放置实体,在 检查器中调整它们的组件,并通过 预制体.

  • CSL 是静态类型的:它会让你感觉更像 Go/Odin,而不是 Lua。(见 CSL 入门.)


Roblox → All Out 对照速查表

Roblox 概念
All Out / CSL 概念
说明

Roblox Studio

All Out Editor

你可以从 Creator Portal 启动它(见 启动编辑器).

Place / Experience

All Out 游戏项目

你的本地项目文件夹包含一个 scripts 目录,用于 .csl 文件。

Explorer / Workspace

层级

层级会显示当前世界/场景中的所有实体。

Instance / Model / Part

实体

“类似文件夹”的组织方式是通过将实体设为父子关系来实现的(见 层级).

属性窗口

检查器

你可以在这里编辑实体/组件字段并添加组件。

属性

序列化的组件字段

使用 @ao_serialize 向编辑器公开字段(见下面示例)。

模型复用

预制体

预制体还处于早期阶段,目前除了位置之外还不支持每个实例的自定义字段(见 预制体).

ProximityPrompt / ClickDetector

可交互组件

添加 Interactable派生组件,并实现 can_use/on_interact (见 可交互对象).

Touched / Region3 / GetPartsInPart

范围查询(目前)

碰撞进入/退出回调还没有暴露出来;请使用 Scene.get_all_components_in_range (见 导航网格与碰撞).

工具 / 技能 / 移动端按钮

技能

内置的移动端/PC 友好按钮 UI + 冷却模式(见 技能).

DataStoreService

保存 + JSON + 经济系统

ScreenGui / GuiObjects

All Out UI 系统


你的第一个小时(推荐路线)

  1. 按照中的“苹果收集”教程进行 构建一个基础游戏.

  2. 快速浏览中的 CSL 基础 CSL 入门 (尤其是 ao_start, ao_update,以及创建组件)。

  3. 了解如何通过 检查器.


脚本思维模型(Lua → CSL)

在 Roblox 中,你通常会编写一个 Script/LocalScript 去查找对象(Workspace.Foo.Bar)并连接事件。在 All Out 中,你通常会:

  • 编写 组件类 ,使用 CSL(行为逻辑)。

  • 在编辑器中将它们附加到实体上(或者在运行时生成实体并添加组件)。

  • 把可调参数存储在组件上,使用 @ao_serialize (这样你就可以在检查器中按实体调整)。

下面是一个小示例,它的感觉就像“挂在对象下的 Script”,但这里用 CSL 组件来表达:

如果你想要一个“游戏脚本”在每个服务器/会话中只运行一次,通常会把它放在主生命周期过程里(ao_start, ao_update等等)。请参见中的模板 CSL 入门.


你会认得的交互方式(以及它们如何转换)

ProximityPrompt → Interactable

如果你在 Roblox 中使用过 ProximityPrompt.Triggered ,最接近的对应物是一个 Interactable派生组件。从这里开始:

“Touched”拾取物 / 触发区域

Roblox 的 BasePart.Touched 是一个非常常见的模式,用于拾取物、伤害区域和检查点。在 All Out 中, 碰撞进入/退出回调目前还没有在 CSL 中实现,因此标准做法是:

  • 查询附近的玩家/组件

  • 做一个简单的距离检查

  • 如果需要进入/退出事件,则跟踪上一帧谁“在里面”

参见中的“伪碰撞行为”:


玩家操作(工具 / 键位绑定 / 移动端控制)

如果你习惯 Roblox 的“工具”脚本,或者手写输入 + 冷却系统,请改用 技能 。它们专为移动端和 PC 都能良好工作而设计,并具有一致的 UI。


保存数据(DataStoreService → 保存系统)

对于持久化数据(货币、解锁内容、进度、外观),从这里开始:


UI(ScreenGui → All Out UI)

Roblox UI 通常从 ScreenGuiFrame/TextButton 层级开始。在 All Out 中,从这里开始:


Roblox 开发者常见的移植陷阱

  • 没有“workspace services”树:不要去找 ReplicatedStorage/ServerScriptService 对应物——请使用编辑器的层级 + 你项目的 scripts 文件夹。

  • 不要等待 Touched 事件:在 CSL 的碰撞回调可用之前,请使用范围查询(上面链接)。

  • 预制体实例目前还没有完全参数化:如果你需要很多带不同数值的副本,可能需要“解除链接”或手动创建唯一实体(见 预制体).

  • 把“组件”理解为“标签”:在你会使用 CollectionService 标签的地方,通常会改为添加一个标记/行为组件。


下一步去哪里

最后更新于