状态机(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/低层路径。