ステートマシン
はじめに
ステート・マシンは、状態管理を単純化するために設計されている。ステートマシンは常に正確に1つの状態にあり、(トリガーによって定義された)特定の条件が満たされたときに状態間を遷移する。 ステート・グループは、複数のステート間で共有されるロジックを束ねる便利な方法だが、グループそのものはステートではない。 ステートと同じAPIを提供するが、すべてのサブステートに動作とトリガーを分散させる。
ステートマシンは3つの主要コンポーネントから構成される:
- 州
- グループ
- トリガー
ステートマシン
ステートマシンの定義
ステートマシン定義器
コンポーネント内部にステートマシンを作成する場合、StateMachineDefinerのインスタンスが使用されます。
プロパティ一覧
Property | Type | 商品説明 |
---|---|---|
world | World | 世界への言及。 |
eid | eid | 現在のコンポーネントのエンティティID。 |
schemaAttribute | WorldAttribute | ワールドスコープにおける現在のコンポーネントのスキーマへの参照。 |
dataAttribute | WorldAttribute | ワールドスコープにおける現在 のコンポーネントのデータへの参照。 |
次のコードは、空のステート・マシンを定義する方法の例である:
ecs.registerComponent({
...
stateMachine: ({world, eid}) => {
// ここで状態を定義する
},
})
ステートマシン定義
あるいは、コンポーネントから独立したステート・マシンを作成することもできる。
コンポーネントの外部でステート・マシンを作成する場合、StateMachineDefinition のインスタンスが使用されます。