Pređi na sadržaj
Meni
← Nazad na blog

Unity TouchScreenKeyboard na desktop WebGL platformi

Frustrated Unity developer debugging TouchScreenKeyboard issue on desktop

Pri radu s Nova UI poljima za unos koja se mogu pomicati u Unityju 6 naišli smo na problem: TouchScreenKeyboard.isSupported vraćao je true na desktopu, na platformama poput Windowsa i macOS-a.

Virtualna tastatura ipak se nije pojavila. Unity „podršku“ definira široko: ako je dostupna fizička tastatura, vraća true, iako se softverska tastatura ne prikazuje.

Problem u NovaUI metodi TextFieldMobileInput.InputLoop

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

Ova provera stalno je pogrešno pretpostavljala da je tastatura vidljiva, što je dovodilo do neželjenog gubitka fokusa ili prekida korutina.

Ispravno rešenje

Ne oslanjajte se samo na TouchScreenKeyboard.isSupported. Kombinirajte ga s Application.isMobilePlatform za jasnu proveru tokom izvršavanja:

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

Ili izmenite komponentu TextFieldMobileInput u NovaUI-ju:

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

Tako se kod za mobilni unos ne izvršava na platformama koje ga ne podržavaju.

Rezultat

  • Na Androidu/iOS-u: TextFieldMobileInput obrađuje softversku tastaturu.
  • Na desktopu: TextFieldKeyboardInput uredno preuzima unos.
  • Nema pogrešnih provera tastature ni nepotrebnih korutina.

Dodatni savet

Proveru možete provoditi i u Editoru putem kontekstnog menija ili skripte za validaciju, kako prefab tokom testiranja ne bi slučajno ponovo uključio komponentu.

Završna razmišljanja

Unityjeve razlike među platformama ponovo su se pokazale, ali zaštitna provera u jednom redu omogućava ispravno ponašanje Nova UI unosa na svim platformama.

Nova UI polje za unos s provjerom mobilne tastature tokom izvršavanja

Unity Nova UI: zaštita logike TouchScreenKeyboard tokom izvršavanja na nemobilnim platformama.

Leave a Comment

Scroll to Top