Preskočiť na obsah
Menu
← Späť na blog

Unity TouchScreenKeyboard na desktopovom WebGL

Frustrated Unity developer debugging TouchScreenKeyboard issue on desktop

Pri práci s posúvateľnými vstupnými poľami Nova UI v Unity 6 sme narazili na problém: TouchScreenKeyboard.isSupported vracalo true aj na Windows a macOS.

Virtuálna klávesnica sa však nezobrazila. Unity považuje za podporu aj prítomnosť hardvérovej klávesnice, hoci softvérovú klávesnicu na desktope neotvorí.

Príznak v TextFieldMobileInput.InputLoop

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

Kontrola nesprávne predpokladala viditeľnú klávesnicu a spôsobovala stratu zamerania alebo ukončenie korutiny.

Správna oprava

Nespoliehajte sa iba na TouchScreenKeyboard.isSupported. Skombinujte ho s Application.isMobilePlatform:

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

Alebo 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;
        }

Tak sa mobilný vstup nebude spúšťať na platformách, ktoré ho nepodporujú.

Výsledok

  • Android/iOS: softvérovú klávesnicu obsluhuje TextFieldMobileInput.
  • Desktop: preberá ju TextFieldKeyboardInput.
  • Žiadne zavádzajúce kontroly ani zbytočné korutiny.

Tip navyše

V Editore môžete pridať kontextové menu alebo validačný skript, aby sa komponent pri testovaní nechtiac nezapol v prefabe.

Záver

Jednoduchá kontrola platformy za behu umožní vstupným poliam Nova UI správne fungovať na rôznych zariadeniach.

Nova UI: kontrola mobilnej klávesnice podľa platformy

Leave a Comment

Scroll to Top