When I start my game I get null-references in my OnStateExit of objects that are initialized in the OnStateEntered. After this it goes smooth, so it only occurs at startup before any conditions for statechanges are met.
How come? My understanding is that OnStateExit is always preceded by OnStateEntered.
My StateBehaviour
public class DuckStateBehaviour : BaseStateBehaviour {
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
base.OnStateEnter(animator, stateInfo, layerIndex);
mMovement.BeginDuck();
}
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
if (mMovement != null) mMovement.EndDuck();
base.OnStateExit(animator, stateInfo, layerIndex);
}
}
public class BaseStateBehaviour : StateMachineBehaviour {
protected Transform mTransform = null;
protected Rigidbody2D mRigidBody = null;
protected IMovement mMovement = null;
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
mTransform = animator.gameObject.GetComponent<Transform>();
mRigidBody = animator.gameObject.GetComponent<Rigidbody2D>();
mMovement = animator.gameObject.GetComponent<IMovement>();
Debug.Assert(mTransform != null);
Debug.Assert(mRigidBody != null);
Debug.Assert(mMovement != null);
}
}
OnStateEnter
_"- Called on the first Update frame when a statemachine evaluate this state."_ andOnStateExit
"- Called on the last update frame when a statemachine evaluate this state." Maybe the 'default' state is unloaded but not explicitly loaded. And maybe it's a bug. \$\endgroup\$ – Vaillancourt♦ Aug 7 '16 at 14:26