clock游戏/帧 生命周期

与 Roblox 等事件驱动的脚本不同,All Out 上的游戏使用帧生命周期模型,允许你在游戏开始时、每一帧以及会话结束时运行代码。

All Out 游戏遵循一个简单的生命周期:有些回调在启动时只运行一次,有些则在每一帧都运行。

你将以以下方式实现这些回调:

  • 全局 (顶层 ao_* 过程在 main.csl),或

  • 在组件上 (像 ao_start 内部的 Player 或你自己的 Component 子类)的方法

circle-info

如果你在寻找“模板” main.csl,见 CSL 入门.

全局生命周期(场景范围)

这些是在顶层的过程(procs) main.csl:

ao_before_scene_load

在场景创建之前运行。这通常是你注册“全局定义”的地方:

  • 物品定义(物品栏/库存系统)

  • 货币(经济系统)

  • 全局配置值/常量

尤其是

在场景开始时运行一次。

常见用途:

  • 生成运行时实体/预制件

  • 初始化全局系统

  • 读取全局游戏存档数据

ao_update(dt)

每帧运行一次。

常见用途:

  • 游戏计时器、波次管理器

  • 依赖时间的生成逻辑

  • 服务器权威的游戏规则

ao_late_update(dt)

在每帧的 ao_start.

常见用途:

  • 之后每帧运行一次

  • 依赖于帧最终位置/状态的 UI

更新后的“清理”工作

组件生命周期(每实体) Player组件(包括

  • ao_start()

  • ao_update(dt)

  • ao_late_update(dt)

  • ao_end()

示例:

// 清理(销毁时)

  • 放置代码的经验法则每玩家的状态/逻辑 Player (见 添加玩家逻辑)

  • :把它放在可重用的实体行为 实体与组件)

  • :把它们放在自定义组件上(参见全局协调/规则ao_* :把它放在全局生命周期(

过程)中)

服务器 vs 本地 All Out 会自动将游戏玩法状态从服务器同步到客户端,但你仍然希望将 仅限外观的

工作保留为本地。

  • 用于仅本地的 UI/粒子,和 使用:

  • 将装饰性逻辑与玩法逻辑分离。 用于游戏玩法 UI + 输入处理(在服务器和本地客户端上运行)用于外观 UI/效果(仅在本地客户端上运行)

最后更新于