Some people find a hammer and think everything is a nail they can smack with it.
Perhaps coroutines are a good solution, perhaps not, I haven’t analyzed the code in question.
But I do see a TON of questions in here with issues and errors stemming from runaway complexity originating with crazy coroutines.
Coroutines are NOT always an appropriate solution: know when to use them!
“Why not simply stop having so many coroutines ffs.” - orionsyndrome on Unity3D forums
Our very own Bunny83 has also provided a Coroutine Crash Course:
FSM finite state machines:
I suggest never using the term “state machine.” Instead, just think:
- I have to keep track of some THING(s)
- That THING might change due to reasons
- Depending on that THING, my code might act differently
That’s it. That’s all it is. Really!! The classic example is a door:
- track if it is open or closed
- if it is open, you could close it
- if it is closed, you could open it
- if it is open you could walk through it
- if it is closed you could bump into it
Wanna make it more complex? Try this:
- put a latch on one side of the door.
- handle all the above with the latch locked or open
This is my position on finite state machines (FSMs) and coding with them:
I’m kind of more of a “get it working first” guy.
Ask yourself, “WHY would I use FSM solution XYZ when I just need a variable and a switch statement?”
All generic FSM solutions I have seen do not actually improve the problem space.
Your mileage may vary.
“I strongly suggest to make it as simple as possible. No classes, no interfaces, no needless OOP.” - Zajoman on the Unity3D forums.
2 Likes