I’m curious if we’re every going to see improvements on input management. The current input system is clunky, imho, and I have to create my own input management systems just so players can modify their controls in game. Looking at the feedback site this feature was voted on substantially YEARS ago, yet I’ve heard no word that anything is being worked on.
No, it’s not better yet. It’s being worked on but it will be a long time before we see any changes. Platform roadmaps | Unity
Someone should buy isthenewinputoutyet.com - I have no funds for that, but someone should.
Only if they set a date for it, but never deliver. That’s when it can become a meme.
You would think this would be mildly easier than the GUI to please everybody, so long as they don’t rip out input and/or event. Especially event since I imagine no one want to even admit onGUI is a thing that still exists since it’s status has been relegated to the editor.
I feel your pain. I got tired of waiting (5+ years) for Unity to fix it and wrote Rewired. It does pretty much everything you’d have wanted Unity’s input manager to do and buckets more, plus it’s based on native input so it supports more than 20 buttons per controller (useful for flight sims for instance). And now it even comes with a Unity GUI-based in-game control remapping system. There’s a free trial on my website if you’re interested.
OnGUI is super handy. I wouldn’t plan to use it in production, but I find it really useful to be able to quickly slap stuff up on the screen while developing components.
Edit: Oh, typo!
The new GUI works pretty well, also.
They’re very different things and both have their uses. There’s nothing wrong with using OnGUI in production, either.
–Eric
void OnGUI() {
GUI.Label(new Rect(0, 0, 500, 20), "Yeah, but it takes far longer than this.");
}
True, I’ve shipped many a project using OnGUI.
You’re straight thug, master penguin.
But in a bizarre twist, including OnGUI code in production is pretty much the only way to do runtime configurable input.
Once I got used to the paradigm shift I find UI faster.
I’m just going to give a quick shoutout to InControl.
Originally we used it because it creates a uniform way of supporting several different controllers - key rebinding is just icing on the cake.
I find the new system far better for making fully-fledged game GUIs. If I just want a quick readout of internals for something, though, I’m far more likely to do a bunch of OnGUI labels. Mainly because I can do them in-place and they just magically appear on the screen, and when I’m done I just comment it out or delete the method. With the new system I have to generate the various bits and pieces as GameObjects and hook them up, and then I’ve got two places to delete stuff from, and so on.
No it’s not. Check this out: Control Mapper
Hmm, I’m tempted to buy it just to pull it apart and see how it works.
My remappable input is pretty crude. It’s basically just a wrapper for Unity’s input, with a layer of misdirection.
Native code. If I recall correctly he’s completely bypassing Unity’s input system for the supported platforms.
As our Roadmap says; we are working on it. No ETA though, sorry!
I thought so. I was wondering if doing the same thing would help our battery obsessed friend. In theory you could simply stop everything until you picked up an input in your native thread.
You should definitely checkout Rewired Control Mapper and then coupled with Native Input (DirectInput or RawInput) on Windows. There is also Unity fallback (on platforms with Native support) if someone really needs that for a specific reason.
Rewired new Control Mapper works with the new Unity UI for remapping controllers which works great. You should get the Rewired free trial and at least check it out.
If you are using Flight Controllers with Unity you are already dead in the water since most of the best controllers (e.g. HOTAS systems like ThrustMaster’s Warthog) already exceed the Unity 20 button count easily. Take CH FighterStick for example. You have over 30 buttons and then 3 modes which gives you over 90 combinations. I think CH says there are 176 combinations on the FighterStick controller. Then you need to find a customer (i.e. the final end users) who will actually map all of the functions on a controller the same way. Thankfully Rewired Control Mapper solves that problem nicely.
Just looking at Elite Dangerous game as a guide, it is so nice to see customers so willingly spending $300-$600 just on Flight Controllers. I like customers like that who are so willing to invest in good controllers for a game/simulation. But the customers never seem to map their controllers in the same way either. If you have customers spending that type of money on controllers you better hope you can at the very least detect all of those controllers so the customer can remap them.
Thankfully Rewired does an amazing job of supporting the best Flight Controllers automatically and more importantly not just detect but all of the details of all 30+ buttons of each controller. Then you have Rewired Control Mapper to handle all of the remapping of the controller too.
I am surprised more people have not tried Rewired and see if it works for them. Especially with the free trial version of Rewired available to test it out before purchasing.
I usually have 1 ongui label somewhere for debugging, but I love setting up the new stuff. I recall hating it very strongly in the initial release, but I figured it out now. The first hour of every project is making sure the GUI is setup right lol
Can’t you defined an array / list / whatever of acceptable keys and then have your classes that receive input have some public KeyCode references? Then you could rebind keys as long as your game could listen for input.
I have yet to try this But I assume it could work. KeyCode jump = listenForAcceptableKey();