Better way to create Events inside a StateMachineBehaviour
I would like to use events on StateMachineBehaviour instead of using bool parameters. But I was having a problem using delegate events and I don't have any Idea on how to access StateMachineBehavior from a MonoBehavior class. I don't want to spend much time So I made it worst like this.
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;
}
I was able to unsubscribe manually but It gets more complicated when errors are rising up, and It takes me more time to review my code when I missed one. Can I use Unity Events? Sadly I've never tried using it.
Your answer
![](https://koobas.hobune.stream/wayback/20220612061916im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Mecanim Drawer Animation problem? 0 Answers
Play sound when looking at an object for a certain amount of time 0 Answers
UnityEngine.GameObject' does not contain a definition for `SetSelectedGameObject' 0 Answers
Mecanim animation playing once on button press 2 Answers
Can't find Animator State/Invalid Layer Index in child object inside prefab 0 Answers