Přeskočit na obsah
Menu
← Zpět na blog

Unity TouchScreenKeyboard na desktopovém WebGL

Frustrated Unity developer debugging TouchScreenKeyboard issue on desktop

Při práci s posouvatelnými vstupními poli Nova UI v Unity 6 jsme narazili na problém: TouchScreenKeyboard.isSupported vracelo true i na Windows a macOS.

Virtuální klávesnice se nezobrazila. Unity považuje za podporu i přítomnost hardwarové klávesnice, přestože softwarovou klávesnici na desktopu neotevře.

Příznak v TextFieldMobileInput.InputLoop

if (touchScreenKeyboardController.Status != TouchScreenKeyboard.Status.Visible)

Kontrola nesprávně předpokládala viditelnou klávesnici a způsobovala ztrátu zaměření nebo ukončení korutiny.

Správná oprava

Nespoléhejte jen na TouchScreenKeyboard.isSupported. Zkombinujte ho s Application.isMobilePlatform:

void Awake()
{
    if (!Application.isMobilePlatform)
    {
        Debug.Log("TextFieldMobileInput disabled on non-mobile platform.");
        this.enabled = false;
    }
}

Nebo upravte TextFieldMobileInput v Nova UI:

protected override void OnEnable()
        {
            Debug.Log("TouchScreenKeyboard.isSupported: " + TouchScreenKeyboard.isSupported);
            if (!Application.isMobilePlatform || !TouchScreenKeyboard.isSupported)
            {
                Debug.Log("Disabling TextFieldMobileInput – not a mobile platform");
                enabled = false;
                // If touchscreen keyboard not supported on this device, do nothing
                return;
            }

            base.OnEnable();

            // Subscribe to selection changed so we can update the touch screen
            // keyboard whenever the input field selection changes
            inputField.OnTextSelectionChanged += UpdateTouchScreenKeyboardSelection;
        }

Mobilní vstup se tak nebude spouštět na platformách, které ho nepodporují.

Výsledek

  • Android/iOS: softwarovou klávesnici obsluhuje TextFieldMobileInput.
  • Desktop: přebírá ji TextFieldKeyboardInput.
  • Žádné zavádějící kontroly ani zbytečné korutiny.

Tip navíc

V Editoru můžete přidat kontextové menu či validační skript, aby se komponenta při testování nechtěně nezapnula v prefabu.

Závěr

Jednoduchá kontrola platformy za běhu umožní vstupním polím Nova UI správně fungovat na různých zařízeních.

Nova UI: kontrola mobilní klávesnice podle platformy

Leave a Comment

Scroll to Top