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
![](https://koobas.hobune.stream/wayback/20220612084551im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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