Does unity support keyboard input?

Mobilt Tastaturinput i Unity: En Komplet Guide

12/12/2021

Rating: 4.76 (16162 votes)

I dagens digitale landskab er mobilapplikationer og spil uundværlige, og en central del af brugerinteraktionen er evnen til at indtaste tekst. Uanset om det er et brugernavn, en chatbesked eller et søgeord, er effektiv håndtering af tastaturinput afgørende for en flydende og intuitiv brugeroplevelse. Unity, som en af verdens førende spiludviklingsplatforme, tilbyder forskellige metoder til at integrere mobilt tastaturinput i dine projekter. Denne artikel vil udforske Unitys indbyggede funktioner til tastaturhåndtering og introducere en populær tredjeparts-plugin, UMI (Unity Mobile Input), der udvider mulighederne betydeligt for at levere en ægte native brugeroplevelse på Android- og iOS-enheder.

Does unity support keyboard input?
In most cases, Unity will handle keyboard input automatically for GUI elements but it is also easy to show the keyboard on demand from a script. The keyboard will appear automatically when a user taps on editable GUI elements.

Unitys Indbyggede Mobiltastaturhåndtering

Unity håndterer i mange tilfælde tastaturinput automatisk for GUI-elementer, men det er også ligetil at vise tastaturet efter behov via et script. Denne fleksibilitet giver udviklere kontrol over, hvornår og hvordan tastaturet præsenteres for brugeren.

GUI-elementer og Automatisk Tastaturvisning

Når en bruger trykker på redigerbare GUI-elementer i Unity, vil tastaturet typisk dukke op automatisk. Dette gælder for standardelementer som GUI.TextField, GUI.TextArea og GUI.PasswordField. Unitys indbyggede system genkender, når disse inputfelter aktiveres, og kalder det relevante mobile tastatur frem for at give brugeren mulighed for at indtaste tekst. Dette er en grundlæggende, men effektiv måde at håndtere tekstinput på, især for simple applikationer eller spil, hvor avancerede funktioner ikke er et krav.

Manuel Tastaturhåndtering med TouchScreenKeyboard

For mere specifik kontrol kan udviklere manuelt åbne tastaturet ved hjælp af funktionen TouchScreenKeyboard.Open(). Denne funktion er en del af TouchScreenKeyboard-klassen, som er Unitys primære interface til interaktion med det mobile skærmtastatur. Ved at kalde denne funktion kan du programmatisk styre visning og adfærd af tastaturet, hvilket giver dig frihed til at integrere det i mere komplekse UI-flows eller spilmekanikker. Det er vigtigt at bemærke, at TouchScreenKeyboard.Open() tager forskellige parametre, der giver dig mulighed for at tilpasse tastaturets type og adfærd, hvilket vi vil se nærmere på nedenfor.

Fleksible Tastaturlayoutmuligheder

TouchScreenKeyboard understøtter en række forskellige tastaturlayouts, der kan optimeres til den specifikke type input, brugeren skal give. Dette forbedrer brugeroplevelsen markant ved at præsentere et tastatur, der er skræddersyet til formålet. Her er en oversigt over de tilgængelige typer:

Egenskab (TouchScreenKeyboardType)Funktion
DefaultStandard bogstavtastatur. Kan skiftes til tastatur med tal og tegnsætning.
ASCIICapableBogstavtastatur. Kan skiftes til tastatur med tal og tegnsætning.
NumbersAndPunctuationKun tal og tegnsætning. Kan skiftes til tastatur med bogstaver.
URLBogstaver med skråstreg og .com-knapper. Kan skiftes til tastatur med tal og tegnsætning.
NumberPadKun tal fra 0 til 9. Ideel til numerisk input.
PhonePadTastatur brugt til indtastning af telefonnumre.
NamePhonePadBogstaver. Kan skiftes til telefontastatur.
EmailAddressBogstaver med @-tegn. Kan skiftes til tastatur med tal og tegnsætning.

Tekstforhåndsvisning og Skjul Input

Som standard vil en redigeringsboks blive oprettet og placeret oven på tastaturet, når det vises. Denne boks fungerer som en forhåndsvisning af den tekst, brugeren indtaster, hvilket sikrer, at teksten altid er synlig. Dette er en vigtig funktion for brugervenlighed, da det forhindrer, at tastaturet blokerer for den tekst, der skrives. Men du kan deaktivere denne tekstforhåndsvisning ved at sætte TouchScreenKeyboard.hideInput til true. Det er dog vigtigt at bemærke, at denne funktion kun virker for visse tastaturtyper og inputtilstande. For eksempel vil den ikke fungere for telefon-tastaturer og flersidet tekstinput. I sådanne tilfælde vil redigeringsboksen altid vises. TouchScreenKeyboard.hideInput er en global variabel og vil påvirke alle tastaturer i din applikation.

Synlighed og Tastaturstørrelse

TouchScreenKeyboard tilbyder tre vigtige egenskaber, der bestemmer tastaturets synlighedsstatus og størrelse på skærmen. Disse egenskaber er afgørende for at tilpasse dit UI, når tastaturet vises eller skjules, for eksempel for at flytte inputfelter, så de ikke bliver skjult af tastaturet.

EgenskabFunktion
visibleReturnerer true, hvis tastaturet er fuldt synligt på skærmen og kan bruges til at indtaste tegn.
areaReturnerer tastaturets position og dimensioner (en Rect).
activeReturnerer true, hvis tastaturet er aktiveret. Denne egenskab er ikke statisk; du skal have en tastaturinstans for at bruge den.

Det er vigtigt at bemærke, at TouchScreenKeyboard.area vil returnere en Rect med position og størrelse sat til (0, 0, 0, 0), indtil tastaturet er fuldt synligt på skærmen. Du bør derfor ikke forespørge denne værdi umiddelbart efter TouchScreenKeyboard.Open(). Sekvensen af tastaturhændelser er typisk som følger:

  1. TouchScreenKeyboard.Open() kaldes.
  2. TouchScreenKeyboard.active returnerer true.
  3. TouchScreenKeyboard.visible returnerer false.
  4. TouchScreenKeyboard.area returnerer (0, 0, 0, 0).
  5. Tastaturet glider ind på skærmen. Alle egenskaber forbliver de samme.
  6. Tastaturet stopper med at glide. TouchScreenKeyboard.active returnerer true.
  7. TouchScreenKeyboard.visible returnerer true.
  8. TouchScreenKeyboard.area returnerer tastaturets reelle position og størrelse.

Denne forståelse af tastaturets livscyklus er afgørende for at opbygge et responsivt UI, der tilpasser sig tastaturets tilstedeværelse.

Sikker Tekstinput

Det er muligt at konfigurere tastaturet til at skjule symboler under indtastning, hvilket er yderst nyttigt, når brugere skal indtaste følsomme oplysninger som f.eks. adgangskoder. For manuelt at åbne tastaturet med sikker tekstinput aktiveret, kan du bruge følgende kode:

TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true);

Den sidste true-parameter i denne funktion kalder på den sikre input-tilstand, der skjuler tegn, mens de indtastes, hvilket øger sikkerheden for brugerens data.

Alarmtastatur

For at vise tastaturet med en sort, semi-transparent baggrund i stedet for den klassiske uigennemsigtige, kan du kalde TouchScreenKeyboard.Open() som følger:

TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, true);

Den sidste true-parameter i denne kald aktiverer "alarmtastatur"-tilstanden, som kan give en anderledes visuel feedback og passer godt til visse UI-design. Selvom Unitys indbyggede tastaturhåndtering er robust og dækker mange grundlæggende behov, er der visse begrænsninger, især når det kommer til integration af native mobilfunktioner. Dette fører os til at se på alternative løsninger som UMI.

UMI: Den Forbedrede Løsning til Mobilt Input

Mens Unitys indbyggede tastaturhåndtering er funktionel, mangler den ofte de avancerede funktioner, som brugere forventer fra native mobilapplikationer. Dette er her, UMI (Unity Mobile Input) kommer ind i billedet som en kraftfuld tredjeparts-plugin til Android og iOS, der tillader dig at udnytte funktioner fra native inputfelter.

Problemet med standard Unity-input

Den nuværende implementering af Unitys inputfelt tillader dig ikke at bruge funktioner som markering af tekst, kopier/sæt ind, emoji-understøttelse og andre indbyggede funktioner, der er standard på mobile platforme. Dette kan føre til en mindre poleret og frustrerende brugeroplevelse, især i applikationer, der er afhængige af omfattende tekstinteraktioner. Fraværet af disse funktioner tvinger ofte udviklere til at implementere komplekse og ofte ineffektive workarounds, eller simpelthen at acceptere et kompromis med brugeroplevelsen.

UMI-løsningen

UMI-plugin'et løser dette problem ved at oprette native inputfelter oven på dit Canvas UI. Da dette er en "hack" og inputfelterne placeres oven på UI'et, skal du selv kontrollere deres synlighed og position. Plugin'et leverer dog nogle nyttige muligheder for at gøre dette mere bekvemt. Resultatet er, at dine brugere får adgang til alle de platformsspecifikke funktioner, de er vant til fra andre apps på deres enheder, hvilket markant forbedrer den samlede brugeroplevelse og applikationens professionalisme.

Nøglefunktioner i UMI

UMI pakker en imponerende række funktioner, der bringer mobil input i Unity op på et helt nyt niveau. Disse funktioner gør det muligt for udviklere at skabe en sømløs og funktionsrig tekstinput-oplevelse.

What is unity mobile input plugin?
Unity mobile input (UMI) plugin for Android and iOS, allows to use features of mobile native input fields Uh oh! There was an error while loading. Please reload this page. Uh oh!
  • Native inputfelt og tastatur på iOS og Android.
  • Vælg returknapstype: Default, Next, Done, Search, Send.
  • Kontrol over returknap-callback.
  • Kontrol over Done- og Clear-knapper (iOS).
  • Select All og Paste knapper (iOS).
  • Mulighed for at ændre nogle indstillinger under runtime.
  • Skjul yderligere mobilt inputfelt (Android).
  • Registrer tastatur vis/skjul (med højde).
  • Registrer skærmorientering.
  • Tastatursprog for inputfelt.
  • Understøttelse af brugerdefinerede skrifttyper.

Disse funktioner giver dig en hidtil uset kontrol over tekstinput i dine Unity-mobilapplikationer, hvilket gør dem mere intuitive og brugervenlige.

Installation og Brug af UMI

At komme i gang med UMI er en ligetil proces, der kan forbedre dit projekts inputfunktioner på få minutter.

Installation

Du kan hente UMI fra deres releases-side eller tilføje den direkte fra Git URL'en til din Packages/manifest.json fil:

"com.mopsicus.umi": "https://github.com/mopsicus/umi.git",

Dette vil automatisk installere modulet i dit Unity-projekt.

Hurtig Start

For at se UMI i aktion, anbefales det at se eksemplerne i UMI-projektet. Disse demoer viser, hvordan du initialiserer og bruger UMI i din app, hvordan du opretter en chat-lignende app, og hvordan du bruger en brugerdefineret skrifttype. UMI er testet i Unity 2020.3.x, Android (API >= 24) og iOS.

Initialisering

Før du opretter det første inputfelt, skal UMI initialiseres. Dette opretter et specielt GameObject i scenen med en controller, der interagerer med native plugins. Dette gøres typisk i en applikations indgangspunkt, f.eks. i Awake-metoden:

using UnityEngine; using UMI; public class Bootstrap: MonoBehaviour { void Awake() { MobileInput.Init(); } }

Vigtigt: Sørg for at gøre dette, før du opretter alle inputfelter, ellers vil UMI kaste en undtagelse. Bemærk også, at UMI ikke fungerer med indstillingen "Render Over Native UI" aktiveret.

Opsætning af MobileInputField

For at begynde at bruge UMI i dit projekt skal du tilføje MobileInputField-scriptet til et GameObject, der allerede har et TMP InputField-komponent. I inspektøren kan du redigere flere muligheder, der vil blive anvendt på det native inputfelt, herunder:

  • Tekstfarve og pladsholdertekst/farve
  • Tekstmarkering og markør/caret-farve
  • Tegnbegrænsning og skriftstørrelse
  • Tekstjustering og indholdstype
  • Tastaturtype og multiline-indstilling
  • Baggrundsfarve, returknapstype og callback
  • Brugerdefineret skrifttype og manuel skjul-indstilling
  • Done- og Clear-knapper (iOS)

Disse omfattende indstillinger giver dig mulighed for at finjustere udseendet og adfærden af dine native inputfelter, så de passer perfekt til dit UI-design.

Tastatur- og Orienteringstilbagekald

Hvis du har brug for at registrere visning eller skjuling af tastaturet, eller ændringer i skærmorientering, kan du abonnere på UMI's events:

using UnityEngine; using UMI; public class Bootstrap: MonoBehaviour { void Awake() { MobileInput.Init(); MobileInput.OnKeyboardAction += OnKeyboardAction; MobileInput.OnOrientationChange += OnOrientationChange; } void OnOrientationChange(HardwareOrientation orientation) { // kaldes når skærmorienteringen ændres } void OnKeyboardAction(bool isShow, int height) { // kaldes når tastaturet vises eller skjules, og når tastaturhøjden ændres } }

Med OnKeyboardAction kan du styre UI-elementer, f.eks. flytte inputfeltet op, som det ses i chat-apps, for at sikre, at det altid er synligt over tastaturet.

Runtime-metoder

UMI tilbyder også en række metoder, der kan kaldes under runtime for at ændre inputfeltets egenskaber dynamisk:

  • SetTextColor: Ændrer tekstfarven.
  • SetPlaceholderColor: Ændrer pladsholdertekstfarven.
  • SetBackgroundColor: Ændrer baggrundsfarven.
  • SetContentType: Ændrer inputfeltets indholdstype.
  • SetReadonly: Skifter skrivebeskyttet tilstand.
  • SetLanguage: Ændrer tastatursprog.
  • SetCaret: Indstiller markørposition.

Disse metoder giver dig fuld dynamisk kontrol over inputfelternes adfærd i din applikationen.

Brug af Brugerdefinerede Skrifttyper

UMI gør det muligt at bruge brugerdefinerede TTF-skrifttyper. Du skal blot kopiere dine TTF-skrifttyper til StreamingAssets-mappen og indtaste skriftnavnet i den relevante egenskab i inspektøren. Ved første initialisering kopierer UMI skrifttyperne til en speciel app-mappe. Hvis du ændrer skrifttyperne ved en senere opdatering, skal du kalde MobileInput.UpdateFonts() for at opdatere app-mappen med de nye skrifttyper.

Under the Hood: iOS og Android Implementering

UMI er designet med platformsspecifikke implementeringer for at sikre den bedste native ydeevne og funktionalitet. iOS-plugin'et er enkelt med kun 3 filer, hvor MobileInput.mm er kernen i implementeringen. Android-plugin'et er et kompileret AAR-bibliotek, hvor kildekoderne er tilgængelige i Android~-mappen, hvilket giver mulighed for at tilpasse den Android-specifikke del. For Android-udviklere er det vigtigt at sikre, at din AndroidManifest.xml har indstillingen android:windowSoftInputMode="adjustNothing" for at forhindre, at skærmen forskydes, når tastaturet vises. Unity-delen af plugin'et indeholder en wrapper til at kalde de native metoder og et editor-script til at tilpasse parametrene i inspektøren. Data overføres mellem Unity og native plugins i JSON-format ved hjælp af NiceJson-biblioteket.

Ofte Stillede Spørgsmål (FAQ)

Hvorfor er UMI nødvendig, når Unity har indbygget tastaturhåndtering?
Mens Unitys indbyggede funktioner dækker grundlæggende tastaturinput, mangler de avancerede native funktioner som tekstmarkering, kopier/sæt ind og emoji-understøttelse, som brugere forventer fra mobile apps. UMI udfylder dette hul ved at oprette native inputfelter oven på Unitys UI, hvilket giver en mere komplet og brugervenlig oplevelse.
Hvordan installerer jeg UMI i mit Unity-projekt?
Du kan installere UMI ved at tilføje linjen "com.mopsicus.umi": "https://github.com/mopsicus/umi.git", til dit Packages/manifest.json fil, eller ved at downloade det fra UMI's releases-side og importere pakken manuelt.
Kan jeg bruge brugerdefinerede skrifttyper med UMI?
Ja, UMI understøtter brugerdefinerede TTF-skrifttyper. Du skal placere dine skrifttyper i mappen StreamingAssets og angive skriftnavnet i MobileInputField-komponenten. Husk at kalde MobileInput.UpdateFonts(), hvis du opdaterer skrifttyperne senere.
Hvordan håndterer UMI tastaturets synlighed og UI-justering?
UMI giver tilbagekald (callbacks) som MobileInput.OnKeyboardAction, der informerer dig, når tastaturet vises eller skjules, samt dets højde. Dette giver dig mulighed for programmatisk at justere dine UI-elementer, såsom at flytte inputfelter, for at sikre, at de altid er synlige over tastaturet.
Er UMI kompatibel med alle Unity-versioner?
UMI er testet og fungerer med Unity 2020.3.x og nyere versioner. Det er også kompatibelt med Android (API >= 24) og iOS.

Konklusion

Effektiv håndtering af mobilt tastaturinput er afgørende for at skabe professionelle og brugervenlige applikationer i Unity. Mens Unitys indbyggede TouchScreenKeyboard-funktionalitet giver et solidt fundament for grundlæggende tekstinput, er dens begrænsninger tydelige, når det kommer til at levere en ægte native oplevelse med funktioner som kopier/sæt ind og emojis. Her skinner UMI-plugin'et som en uundværlig løsning, der bygger bro over kløften mellem Unitys standardfunktionalitet og de rige interaktionsmuligheder, som mobile platforme tilbyder. Ved at udnytte UMI kan udviklere forbedre deres applikationers brugervenlighed betydeligt, hvilket resulterer i en mere flydende og tilfredsstillende oplevelse for slutbrugeren. Uanset om du udvikler et simpelt spil eller en kompleks applikation, er det at forstå og implementere de rette tastaturinput-strategier nøglen til succes inden for mobiludvikling.

Hvis du vil læse andre artikler, der ligner Mobilt Tastaturinput i Unity: En Komplet Guide, kan du besøge kategorien Mobiludvikling.

Go up