进入状态时,我要传递状态如下的参数:
playerStateMachine.enter(pauseState.self,[“ score”:123,“ rank”:1])
所以我可以在didEnter方法中获得该值,如下所示:
class pauseState: GKState {
var userinfo:[String:Any]?
init(player: SSGameDelegate) {
super.init(player: player)
}
override func didEnter(from previousState: GKState?) {
super.didEnter(from: previousState)
//Access input value here
print(userinfo["score"])
print(userinfo["rank"])
}
}
答案 0 :(得分:0)
您不会以这种方式传递参数。在您当前的状态下,有一个功能。
func willExit(to nextState: GKState)
您可以在此处以nextState.userinfo[score] = 111
的形式传递参数
答案 1 :(得分:0)
如果您跟踪状态计算机状态,则可以在进入状态之前设置参数。我不确定这是否是线程安全的,我将在我进一步测试用法时进行更新。
let alienWaitState = AlienWaitState(game: self)
let alienFlyingState = AlienFlyingState(game: self)
aliensStateMachine = GKStateMachine(states: [
alienWaitState,
alienFlyingState,
AlienAnimateOffState(game: self),
AlienDeadRemovalState(game: self)
])
在这种情况下,可以在输入状态之前设置AlienState参数“ associatedAlienName”
alienWaitState.associatedAlienName = newAlien.name
aliensStateMachine.enter(AlienWaitState.self)
AlienState类,AlienWaitState是一个子类
class AlienState: GKState {
weak var game:GameScene?
var associatedAlienName:String?
....