我想在StateMachineBehaviour
上使用事件,而不是使用bool
参数。但是我在使用委托事件时遇到了问题。
public class DeficateState : StateMachineBehaviour {
public delegate void DeficateEvent();
public static event DeficateEvent OnPoop;
public static event DeficateEvent OnPee;
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
if (!update) return;
if (times > IdleTime)
{
update = false;
times = 0;
if(animator.GetInteger("IdleIndex") == 0){
if (OnPoop != null)
OnPoop();
}else{
if (OnPee != null)
OnPee();
}
}
times += Time.deltaTime;
}
我能够手动取消订阅。当我错过了一些时,不小心出现了诸如“m_Animator被破坏但你正试图访问......”之类的错误,这让我花了更多的时间来审查我的代码。
在不使用委托事件的情况下,是否可以更有效,更好地使用StateMachineBehaviour
上的事件?