关于CPU优化,我不是专家,但我读到一般情况很糟糕,因为CPU可能会不断更改(即使不会更改),也无法优化正在运行的代码。所以这是我对Unity和状态机的看法:
通常,您有一个Update方法,该方法根据您的MonoBehaviour当前所处的状态来执行不同的操作。现在,您可以这样做:
// this is only called once when the state switches
private void switchState(State newState) {
state = newState;
}
private void Update() {
switch(state) {
case IDLE:
doIdle();
break;
case ATTACKING:
doAttack();
break;
// [...]
}
}
或者您可以这样做:
// this is only called once when the state switches
private void switchState(State newState) {
switch(newState) {
case IDLE:
_stateUpdateDelegate = doIdle;
break;
case ATTACKING:
_stateUpdateDelegate = doAttack;
break;
// [...]
}
}
private void Update() {
_stateUpdateDelegate();
}
现在,我的问题不是关于状态机如何工作,而是关于在实时情况下更快的状态。我也知道“不要进行预优化”之类的东西,这也不是这个问题的范围。所以我的问题是:什么更快?为什么?(在哪里可以学到更多关于此类事物的信息?)?