DEV Community

Takaaki Ichijo
Takaaki Ichijo

Posted on • Edited on

Attaching submit/cancel input to button event of Doozy UI from Rewired

日本語は下部に書いてあります

In a vanilla unity project, the uGUI button input from the joystick or keyboard are can be detected by the Standalone Input Module and Event System component.

It requires setting first on the Input section in the Unity project setting that witch key or joystick button means of submit/cancel input.

Alt Text

With Doozy UI asset, the joystick input detect must set in Input Mode section on UI Button component. Change the Input Mode to Virtual Button, and write the button name.

Alt Text

But if using Rewired asset with, it doesn't work because Dozzy doesn't refer to the Rewired Setting.
So in this case, it has to change the code in UIButton.cs of Doozy UI as below.


private IList<Player> reInputPlayerList;

public override void Awake()
{
    (omitted)

    ReInput.ControllerPreDisconnectEvent += _ => { reInputPlayerList = ReInput.players.AllPlayers;};
    reInputPlayerList = ReInput.players.AllPlayers;
}

(omitted)

private void Update()
{
        (omitted)

        case InputMode.VirtualButton:
            var isButtonDown = false;
            for (var index = 0; index < reInputPlayerList.Count; index++)
            {
                var r = reInputPlayerList[index];
                isButtonDown =
                    r.GetButtonDown(InputData.VirtualButtonName) ||
                    (InputData.EnableAlternateInputs && r.GetButtonDown(InputData.VirtualButtonNameAlt));

                    if (isButtonDown == true)break;
            }

            if (isButtonDown) ExecuteClick();
            break;

        (omitted)
    }
}

Enter fullscreen mode Exit fullscreen mode

and it will work :)!

BackButton.cs needs the same modification if you use Back button operation in Nody.

--- 日本語 ---

通常のUnityプロジェクトでは、ジョイスティックやキーボードからのuGUIボタン入力はStandalone Input ModuleとEvent Systemコンポーネントで検出することができます。

そのためには、Unity ProjectのInputセクションで、どのキーやジョイスティックボタン submit/cancelの入力を行うかを最初に設定しておく必要があります。

Alt Text

Doozy UI アセットでは、UI Button コンポーネントの Input Mode セクションでジョイスティック入力検出を設定する必要があります。Input ModeをVirtual Buttonに変更し、ボタン名を記述します。

Alt Text

しかしRewiredを使っている場合、Dozzy は Rewired 設定を参照していないので動作しません。そのため、Doozy UIのUIButton.csのコードを以下のように変更する必要があります。


private IList<Player> reInputPlayerList;

public override void Awake()
{
    (中略)

    ReInput.ControllerPreDisconnectEvent += _ => { reInputPlayerList = ReInput.players.AllPlayers;};
    reInputPlayerList = ReInput.players.AllPlayers;
}

(中略)

private void Update()
{
        (中略)

        case InputMode.VirtualButton:
            var isButtonDown = false;
            for (var index = 0; index < reInputPlayerList.Count; index++)
            {
                var r = reInputPlayerList[index];
                isButtonDown =
                    r.GetButtonDown(InputData.VirtualButtonName) ||
                    (InputData.EnableAlternateInputs && r.GetButtonDown(InputData.VirtualButtonNameAlt));
            }

            if (isButtonDown) ExecuteClick();
            break;

        (中略)
    }
}

Enter fullscreen mode Exit fullscreen mode

これで動作します!

Backボタン操作をNodyで使用する場合は、BackButton.csにも同様の変更が必要です。

Top comments (0)