在StateMachineBehaviour脚本(Unity)中创建事件的更好方法

时间:2016-01-26 15:09:38

标签: c# unity3d state behavior

我想在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上的事件?

0 个答案:

没有答案