在Yuka js库中,State类中的onMessage方法是用于处理实体之间的消息通信的。当一个实体需要与其它实体进行通信时,它可以向State发送一条消息,并且可以通过onMessage方法接收到其它实体的消息。
onMessage( sender, message, data )
sender
:消息发送者的引用。message
:消息的类型。data
:消息携带的可选数据对象。class MyEntity extends Entity {
constructor() {
super();
this.stateMachine.setState( 'idle', new MyState() );
}
}
class MyState extends State {
constructor() {
super();
this.setMessages( {
'MY_MESSAGE': this.onMyMessage
} );
}
onMyMessage( sender, data ) {
console.log( 'Received a message of type MY_MESSAGE from', sender, 'with data', data );
}
}
let entity1 = new MyEntity();
let entity2 = new MyEntity();
entity1.sendMessage( entity2, 'MY_MESSAGE', { foo: 'bar' } );
以上示例中,我们创建了两个实体entity1
和entity2
,并向entity2
发送了一个类型为MY_MESSAGE
的消息,并携带了一个名为foo
的数据对象,接着在MyState
类中的setMessages
方法中,我们通过onMyMessage
方法来处理MY_MESSAGE
类型的消息,并打印出接收到的数据和消息发送者的引用。