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:
TextFieldMobileInputobrađuje softversku tastaturu. - Na desktopu:
TextFieldKeyboardInputuredno 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.

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