状态栏(Status Bar)
预览窗口(rive <dir>)默认会在底部显示一条状态栏。它是场景下方一条 28 point 高的条带。场景布局在它上方,因此状态栏不会遮挡内容;窗口会按条带高度变高,画板尺寸保持不变。
各项统计每秒刷新两次,每次取这半秒的平均值。点击状态栏上某个指标的标签,即可跳到本页对应章节。
状态栏只在实时窗口中绘制。它不会出现在截图、--bench 或任何其他无界面运行中。
FPS
窗口每秒实际呈现的帧数。受显示器刷新率限制:大多数显示器为 60,ProMotion 显示器最高可达 120。
FRAME
帧与帧之间的平均间隔,单位为毫秒。能跟上的 60 Hz 显示器会显示 16.7 ms。FRAME 明显高于显示器间隔,说明正在丢帧。
ADVANCE
每帧推进场景所用的 CPU 时间。涵盖状态机、动画、布局、数据绑定,以及脚本的 advance 和 update 调用。在含脚本的内容中,这通常是卡顿的原因。
播放暂停时,ADVANCE 显示为短横线,状态栏显示 PAUSED。在终端用 p 切换播放。
RECORD
记录本帧绘制命令所用的 CPU 时间。渲染是延迟的:主线程记录命令,渲染线程再把它们回放到 GPU。RECORD 只包含记录过程,因此不包括 GPU 时间和呈现时间。
HEAP
文件脚本所拥有的内存。一个文件运行在一个脚本 VM 上,因此 HEAP 报告的是它正在使用的那一个:
| VM | HEAP 表示 |
|---|---|
| AnimaScript | 模块 wasm 线性内存的大小。它只会增长、不会缩小,因此是高水位而不是实时分配量 |
| Luau | 垃圾回收器的堆 |
短横线表示该文件没有脚本。
当运行时警告脚本堆在持续增长(通常意味着泄漏或无界缓存),或存在泄漏的句柄时,HEAP 会变成琥珀色。详情见终端日志。
MEM
整个进程的内存,按操作系统的统计方式:
| 平台 | MEM 表示 |
|---|---|
| macOS | 物理占用(physical footprint),与活动监视器 内存 列的数字相同 |
| Linux | 常驻内存(Resident memory) |
| Windows | 私有字节(Private bytes) |
MEM 包含 HEAP,再加上运行时、画板、图像、字体和 GPU 驱动分配,以及 CLI 自己的编译器和文件监视器。因此它会远大于同一文件在应用内的占用。用它来观察随时间的增长,而不是当作绝对预算。
VM
脚本 VM 及其运行层级:
| 显示 | 含义 |
|---|---|
| AOT | 提前编译,已优化 |
| AOT -O0 | 提前编译,未优化 |
| INTERP | WebAssembly 解释器,比 AOT 慢许多倍 |
| LUAU | Luau VM |
短横线表示该文件没有脚本。
实时窗口中的脚本计时会慢于发布后的文件,因为实时窗口的开发构建会为看门狗计量每一个循环。要给脚本计时,请使用 rive <dir> --bench=N,它使用发布构建。
账户与套餐
状态栏右侧显示你的账户:
| 你的状态 | 状态栏显示 |
|---|---|
| 已登录 | @USERNAME,链接到账户页 |
| 已登录且为免费套餐 | @USERNAME、FREE PLAN 以及 UPGRADE 按钮 |
| 未登录 | NOT SIGNED IN 和 UPGRADE |
隐藏状态栏
付费套餐可以用以下任一方式隐藏状态栏:
| 位置 | 方法 |
|---|---|
| 窗口打开时的终端 | 输入 b |
| 命令行 | 传入 --no-status-bar |
rive.yaml | 设置 window.statusBar: false |
window:
statusBar: false
免费和未登录账户始终会看到状态栏。