Page 1 of 1
Continue button not working after controller disconnect
Posted: Wed Jul 04, 2018 9:23 pm
by mgregoirelds
Hello Tony,
I'm having an issue where my controller turns off by itself while playing (I'm using an Xbox One wireless controller) and for some reason, when I turn it back on again, pressing to continue a dialogue doesn't work anymore. I'm using Rewired. What is funny is that everything else is working when I turn back my controller: I can run, attack and other stuff, so my guess is that something is happening with Dialogue System. It seems like "eventSystem.currentSelectedGameObject" is set to null at this point, so submitting the key doesn't work. Any idea?
Re: Continue button not working after controller disconnect
Posted: Wed Jul 04, 2018 9:32 pm
by mgregoirelds
Maybe it is related to the autofocus option? I can't find it anymore in 2.0. I've taken a look at calls within Dialogue System to UnityEngine.EventSystems.EventSystem.current.SetSelectedGameObject(null) and it is done in UnityUIDialogueUI. Could it be that the Continue button is never reselected? I'm using Standard Dialogue UI with TMP.
Re: Continue button not working after controller disconnect
Posted: Wed Jul 04, 2018 10:00 pm
by Tony Li
Hi Maxime,
In the Standard Dialogue UI, the Standard UI Subtitle Panel and Standard UI Menu Panel have a
Navigation section. Make sure the
Focus Check Frequency is non-zero. Try setting the
Refresh Selectables Frequency to a non-zero value such as 1.
When the panel opens, it will cache a list of all buttons it contains. Then it will select the button assigned to
First Selected, if assigned. If the Focus Check Frequency is non-zero, on a repeating frequency it will check that a button is selected; if not, it will select one of the buttons in its cache. If Refresh Selectables Frequency is non-zero, it will refresh the cache on a repeating frequency.
However, it will
not do this if the Input Device Manager's
Input Device is set to
Mouse or
Touch. The Input Device Manager component is on the Dialogue Manager GameObject.
Note that if you move the mouse, it will change the Input Device to
Mouse. (Unless you've unticked Detect Mouse Control. If your Input Device Manager doesn't have a Detect Mouse Control checkbox, you'll need to update to the patch if you want to get it.)
To identify the issue, try this in the Unity editor:
1. Keep the inspector on the Input Device Manager. When the problem occurs, check the Input Device Manager's Input Device value. Make sure it's
Joystick or
Keyboard.
2. If that doesn't help, keep the inspector on the Event System. (Or open two Inspector windows, lock one on the Event System, and lock the other on the Input Device Manager.) When the problem occurs, check what the EventSystem thinks is selected:
If neither of those help, it might be specific to the Rewired integration. I'm going to test that right now. Can you test it temporarily without the Rewired integration to see if there's a difference? I'll let you know what I find in my test.
Re: Continue button not working after controller disconnect
Posted: Wed Jul 04, 2018 10:04 pm
by mgregoirelds
At the same time you were writing your message, I tested out something and I think I found the problem. We had "Detect Mouse Control" checked, so when the controller was not connected, it did fall back to Mouse. Then, upon reconnecting, it stayed in Mouse mode. Why? I'm not sure... Maybe I'm missing some sort of proper Rewired integration, I'm not sure.
Re: Continue button not working after controller disconnect
Posted: Wed Jul 04, 2018 10:24 pm
by Tony Li
If you haven't already done this, please try it:
1. Import the Rewired Support package in Plugins / Pixel Crushers / Common / Third Party Support.
2. Add an
Input Device Manager Rewired component to the Dialogue Manager.
mgregoirelds wrote: ↑Wed Jul 04, 2018 10:04 pmWe had "Detect Mouse Control" checked, so when the controller was not connected, it did fall back to Mouse. Then, upon reconnecting, it stayed in Mouse mode. Why?
For efficiency, the Dialogue System's Input Device Manager doesn't continuously poll for a joystick. Instead, it switches back to Joystick mode only if the player presses any of the
Joystick Key Codes To Check, or
Joystick Buttons To Check (buttons defined in Unity's Input Manager), or
Joystick Axes To Check (also defined in Unity's Input Manager). By default, the buttons and axes lists are empty, but the primary joystick key codes are in the list.
I made these changes to a default test scene, and it appears to work even with
Detect Mouse Control ticked:
1. Imported Rewired. Set up joystick actions UIHorizontal, UIVertical, UISubmit, and UICancel.
2. Inspected the EventSystem. Removed the Standalone Input Module, and added a Rewired Standalone Input Module.
3. Set up the Rewired Support integration as described at the top of this post.
4. (Optional:) Inspected NPC Subtitle Panel, PC Subtitle Panel, and Response Menu Panel. Set
Navigation > Refresh Selectables Frequency to 1. Setting it to 1 is a good safety measure. But it worked with the value set to 0 as well.
Re: Continue button not working after controller disconnect
Posted: Wed Jul 04, 2018 10:25 pm
by Tony Li
I'm finishing work for the day. If it's still giving you problems, please feel free to send me a reproduction scene. I can test it out here tomorrow morning and let you know what I find.
Re: Continue button not working after controller disconnect
Posted: Thu Jul 05, 2018 8:42 am
by mgregoirelds
Hello, we just shipped our demo with the Detect Mouse Control unticked. So far, it worked fine. I'll see about making the proposed changes later today. Thanks a lot Tony!
Re: Continue button not working after controller disconnect
Posted: Thu Jul 05, 2018 8:44 am
by Tony Li
Congratulations on shipping your demo!