I have created an Event based InputManager
Hi, guys. I've been working in Unity for some time and I had one problem: Since the input logic is changing from scene to scene, I needed an InputManager for each scene that my game had.
For example: I had GameScreenInputManager, StoreScreenInputManager, etc. In the first one, I checked for mouse and key events. But in the second one, I just checked for mouse events since there were only buttons.
But having one InputManager for each screen implied a lot of code redundance. Which is bad. BUT there is something worse: With this approach, there is a lot of coupling between classes! Input Managers should know about other scripts references in order to call their methods once some particular input was detected.
So I got tired of that and tried to figure out a better way to handle input while reducing code redundance. After a lot of tries, I came up with this: https://github.com/rebelrabbit/UnityInputManager
Some usage examples:
InputManager.RegisterKeyEvent(InputPhase.onPressed, KeyCode.A, TestPressKeyA);
InputManager.RegisterMouseEvent(InputPhase.onPressed, MouseButton.Left, PointerInputPlace.onAnything, TestAnything);
That meant that the method TestPressKeyA will be automatically called when the user presses the Key 'A' and that whenever the user left-clicks anywhere on the screen, the TestAnything method will be automatically called.
It's a generic script based on events. You will only need one instance of this script in every scene, and you're ready to go. No more scene-dependant InputManagers!
It's pretty basic though. For the moment, it doesn't handle touch or gamepad inputs, but I will be implementing those features really soon.
If this is helpful to anyone, I will feel honored. So, yeah. Please, tell me what you think. I'd really love your feedback.
Your answer
Follow this Question
Related Questions
UNITY no longer detecting XBOX360 controller input,XBOX 360 controller no longer working with UNITY 0 Answers
What Are The Proper Conversions For Key Input in 5.4? 0 Answers
Issue with EventSystems in 2018.4.2f1 0 Answers
Do I need to use the Input Manager to register all input axes? 0 Answers
JoyCons not working with vJoy 0 Answers