跳到主要内容

示例(Examples)

示例项目

CLI 附带八个示例项目。rive samples 会打开选择器,把你选中的示例复制到你指定的目录:

示例展示内容
hello_rive最小的布局脚本:每帧绘制一个移动的形状
rml_triangle最小的 RML 文档:一个画板、一个形状
rml_vm_input由视图模型数据驱动的 RML,带一个脚本输入
rml_split同一场景拆分到多个文件:视图模型放在 data/,场景通过 id 引用
pointer_reactive让场景跟随鼠标:指针 → 视图模型 → 数据绑定
input_demo脚本中的键盘、文本和手柄事件
text_input使用 TextInput 组件的可编辑文本字段
tests_demoLuau 单元测试,用 --test 运行

每个目录本身就是一个完整项目。在无法绘制选择器的环境(例如 CI)中,rive samples 会打印带描述的列表以及一条现成的 cp 命令:

cp -R "$(rive samples --path)/rml_triangle" myproject
rive myproject

无头渲染

--screenshot 会构建项目、在不打开窗口的情况下渲染一帧,并写出 PNG。它不需要登录,因此适合作为 CI 中的检查。

rive myproject --screenshot=out.png                    # 在任何推进之前
rive myproject --screenshot=out.png --advance=1s # 推进一秒后
rive myproject --screenshot=out.png --viewport=390x844 # 指定尺寸

不带 --advance 的捕获是作者设定的静止姿态,而不是动画的开场帧,因为状态机尚未运行。预览请从 --advance=1 开始。

--screenshot 相对当前目录解析路径,而不是项目目录;目录不存在时只会报 screenshot failed: <path>。请先创建该目录。

驱动场景

一张静止场景的截图无法说明它是否会对任何事物做出响应。有两个标志可以在捕获前驱动场景。

--data 设置一个视图模型属性。路径相对于绑定到画板的实例,每一段都是属性名:

rive myproject --screenshot=full.png --data=battery/level=100

--pointer 在画板坐标处模拟指针。click 是一次移动、一次按下和一次释放,每步之间隔一帧,因为状态机只在下一次运行时才会看到手势:

rive myproject --screenshot=hover.png --pointer=move@120,60
rive myproject --screenshot=on.png --pointer=click@120,60 --advance=20

两个标志都可以重复,因此你可以设置多个值或播放一串手势。

请给 drag 的值加上引号。两点之间的 > 否则会被 shell 当成重定向:

rive myproject --screenshot=scrolled.png --pointer='drag@200,300>200,80:12'

检查响应式布局

布局树和手动摆放的画面在单张截图里看起来完全一样。用两种尺寸拍摄同一文件,看是否有东西移动:

rive myproject --screenshot=wide.png   --viewport=900x600
rive myproject --screenshot=narrow.png --viewport=320x700

--viewport 会调整画板本身的尺寸,而不是缩放或裁剪渲染结果。布局会回流到新尺寸中,这才是真正的响应式检查。固定坐标的内容会留在原处,因此没有布局组件的设计在较小视口下看起来像被裁切,在较大视口下则会多出空白。

在 CI 中使用

--verify 会编译所有内容且不写出任何文件。--test 运行项目的 Luau 测试。两者在失败时都以非零退出码退出;--format=json 会在 stdout 输出一个 JSON 对象,日志保留在 stderr:

rive myproject --verify --format=json
rive myproject --test --format=json

每种失败都有各自的退出码,因此流水线可以在不解析输出的情况下分支。参见退出码(Exit Codes)

发布需要浏览器登录,CI runner 通常做不到。其余模式都可以在 CI 中使用。你可以在 CI 中编写、编译、测试和捕获,然后从已登录的机器上发布。

测量性能

--bench 会构建项目、在不打开窗口的情况下为若干帧计时,并报告推进与渲染统计,以及 WASM 内存增长:

rive myproject --bench=600
看完还有疑问?进群交流下!
与众多 Rive 创作者、开发者一起交流探讨与答疑解惑。
加入交流群