toJSON
方法是 StateMachine
类的一个实例方法,用于将当前状态机转换为 JSON 对象。该方法为开发者提供了一种简便的方式来将状态机的信息导出或序列化。
stateMachine.toJSON()
该方法返回一个 JSON 对象,包含当前状态机的所有信息。
import { StateMachine } from 'yuka';
const stateMachine = new StateMachine();
// 添加状态
const stateA = stateMachine.addState( 'stateA' );
const stateB = stateMachine.addState( 'stateB' );
const stateC = stateMachine.addState( 'stateC' );
// 添加转换
stateMachine.addTransition( stateA, stateB, 'triggerA' );
stateMachine.addTransition( stateB, stateC, 'triggerB' );
// 在任何时候调用toJSON方法可以获取当前状态机信息的快照
console.log( stateMachine.toJSON() );
输出结果:
{
"type": "StateMachine",
"id": "572caac1-c4cd-4eda-84e4-4adf55622593",
"currentState": {
"name": "stateA",
"id": "1e1385ca-ba68-449d-aaaf-3d3ea45c2898"
},
"previousState": null,
"states": [
{
"name": "stateA",
"id": "1e1385ca-ba68-449d-aaaf-3d3ea45c2898"
},
{
"name": "stateB",
"id": "963c834a-864e-424f-92e2-7f682c6dcb3e"
},
{
"name": "stateC",
"id": "f6b1a095-126f-4058-95dc-539668ba9621"
}
],
"transitions": [
{
"fromState": {
"name": "stateA",
"id": "1e1385ca-ba68-449d-aaaf-3d3ea45c2898"
},
"toState": {
"name": "stateB",
"id": "963c834a-864e-424f-92e2-7f682c6dcb3e"
},
"trigger": "triggerA",
"guard": null
},
{
"fromState": {
"name": "stateB",
"id": "963c834a-864e-424f-92e2-7f682c6dcb3e"
},
"toState": {
"name": "stateC",
"id": "f6b1a095-126f-4058-95dc-539668ba9621"
},
"trigger": "triggerB",
"guard": null
}
],
"transientData": {}
}
StateMachine
子类中自定义 toJSON
方法。