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 provjera stalno je pogrešno pretpostavljala da je tastatura vidljiva, što je dovodilo do neželjenog gubitka fokusa ili prekida korutina.
Ispravno rješenje
Ne oslanjajte se samo na TouchScreenKeyboard.isSupported. Kombinirajte ga s Application.isMobilePlatform za jasnu provjeru tokom izvršavanja:
void Awake()
{
if (!Application.isMobilePlatform)
{
Debug.Log("TextFieldMobileInput disabled on non-mobile platform.");
this.enabled = false;
}
}
Ili izmijenite 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:
TextFieldMobileInputobrađuje softversku tastaturu. - Na desktopu:
TextFieldKeyboardInputuredno preuzima unos. - Nema pogrešnih provjera tastature ni nepotrebnih korutina.
Dodatni savjet
Provjeru 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 provjera u jednom redu omogućava ispravno ponašanje Nova UI unosa na svim platformama.

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