跳到主要内容

状态机(State Machines)

更多背景:

概览

State Machine 负责在 Artboard 上推进动画与状态转换。

组件模式(推荐)

Rive Widget 会自动根据你配置的 artboard/state machine 加载并推进。

可在 OnWidgetStatusChanged 后读取实例:

[SerializeField] private RiveWidget m_riveWidget;

void OnEnable() {
m_riveWidget.OnWidgetStatusChanged += OnWidgetStatusChanged;
}

void OnWidgetStatusChanged() {
if (m_riveWidget.Status == WidgetStatus.Loaded) {
StateMachine sm = m_riveWidget.StateMachine;
}
}

void OnDisable() {
m_riveWidget.OnWidgetStatusChanged -= OnWidgetStatusChanged;
}

Legacy API

可从 Artboard 获取状态机:

m_stateMachine = m_artboard?.StateMachine();      // default
m_stateMachine = m_artboard?.StateMachine(0); // by index
m_stateMachine = m_artboard?.StateMachine("Name"); // by name

并在 Update 中推进:

m_stateMachine?.Advance(Time.deltaTime);

建议

新项目优先走组件模式 + Data Binding。
仅在你需要完整自定义渲染循环时使用 legacy/低层路径。

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