Sari la conținut
Meniu
← Înapoi la blog

Unity TouchScreenKeyboard pe WebGL desktop

Frustrated Unity developer debugging TouchScreenKeyboard issue on desktop

Lucrând cu câmpurile de introducere derulabile Nova UI în Unity 6, am întâlnit o problemă: TouchScreenKeyboard.isSupported întorcea true pe desktop, inclusiv Windows și macOS.

Dar tastatura virtuală nu apărea. Unity definește „suportul” larg: dacă există o tastatură fizică, întoarce true, chiar dacă tastatura virtuală nu este afișată.

💥 Simptomul în TextFieldMobileInput.InputLoop din Nova UI

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

Verificarea eșua și presupunea greșit că tastatura era vizibilă, producând pierderea nedorită a focalizării sau ieșirea din corutină.

🧠 Soluția corectă

Nu te baza doar pe TouchScreenKeyboard.isSupported. Combină verificarea cu Application.isMobilePlatform:

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

Sau modifică TextFieldMobileInput din 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;
        }

Astfel, codul de introducere destinat mobilului nu rulează pe platformele nepotrivite.

✅ Rezultatul

  • Pe Android/iOS: TextFieldMobileInput gestionează tastatura virtuală.
  • Pe desktop: TextFieldKeyboardInput preia corect introducerea.
  • Fără verificări înșelătoare și corutine inutile.

🧪 Sfat suplimentar

Poți impune verificarea și în Editor, printr-un meniu contextual sau script de validare, pentru ca prefab-ul să nu reactiveze accidental componenta la testare.

🧼 Concluzie

Încă o particularitate Unity: o verificare scurtă la rulare face câmpurile Nova UI să funcționeze corect pe mai multe platforme.

Câmp Nova UI cu verificarea tastaturii mobile la rulare

Unity Nova UI: protejarea logicii TouchScreenKeyboard la rulare pe platforme nemobile.

Leave a Comment

Scroll to Top