30/01/2023
Forståelse af Performance-data på Android med Unity
At sikre en flydende og responsiv brugeroplevelse er afgørende for succes i mobilspil og -applikationer. Unity, en af de mest populære spiludviklingsmotorer, tilbyder kraftfulde værktøjer til at diagnosticere og optimere ydeevnen af dine projekter. Især når det kommer til Android-enheder, giver Unity dig mulighed for at indsamle detaljerede performance-data direkte fra enheden, hvilket er essentielt for at identificere flaskehalse og forbedre den generelle stabilitet og hastighed. Denne artikel vil guide dig gennem processen med at indsamle disse data, fokusere på brugen af Unity Profiler og Android Debug Bridge (ADB).

Hvad er Unity Profiler?
Unity Profiler er et uundværligt vindue i Unity Editor, der hjælper dig med at optimere dit spil. Det viser, hvor meget tid der bruges i forskellige områder af dit spil. For eksempel kan det rapportere procentdelen af tid brugt på rendering, animation eller din spil-logik. Ved at analysere disse data kan du identificere områder, der kræver optimering, såsom tunge script-operationer, ineffektiv rendering eller hukommelseslækager. En god forståelse af Profilerens output er nøglen til at skabe en velfungerende applikation.
Vigtigheden af at Indsamle Data på enheden
Selvom du kan indsamle performance-data, mens du er i Play mode i Unity Editor, giver det mest nøjagtige billede af din applikations ydeevne at forbinde Profileren direkte til en Android-enhed, der er på dit netværk. Dette skyldes, at der kan være forskelle i ydeevnen mellem din computer og en faktisk mobil enhed, især med hensyn til CPU, GPU og hukommelsesbegrænsninger.
Forudsætninger for Fjernprofilering
Før du kan begynde at indsamle data fra din Android-enhed, skal du sikre dig, at visse forudsætninger er opfyldt:
- Firewall-konfiguration: Hvis du bruger en firewall, skal du åbne porte 54998 til 55511 i din firewall's udgående regler. Dette er de porte, Unity bruger til fjernprofilering.
- Netværkskonfiguration: Sørg for, at din Android-enhed og den computer, der kører Unity Editor, er på det samme undernet. Dette er nødvendigt for, at enhedsdetektion kan fungere korrekt.
- Deaktiver mobildata: Deaktiver mobildata på din Android-enhed for at undgå potentielle konflikter eller afbrydelser under profileringen.
Aktivering af Fjernprofilering
Følg disse trin for at aktivere fjernprofilering og forbinde Unity Profiler til din Android-enhed:
- Forbind enheden til dit WiFi-netværk: Profileren bruger et lokalt WiFi-netværk til at sende profileringsdata fra din enhed til Unity Editor.
- Tilslut din enhed til din computer via kabel: Dette er ofte nødvendigt for den indledende opsætning og for at sikre en stabil forbindelse.
- Åbn Build Settings: Gå til menuen File > Build Settings i Unity Editor.
- Aktivér Development Build: I Build Settings-vinduet skal du markere afkrydsningsfeltet for Development Build. En development build inkluderer debug-symboler og muliggør Profiler-adgang.
- Aktivér Autoconnect Profiler: Sørg for, at indstillingen Autoconnect Profiler er aktiveret i Build Settings.
- Vælg Build & Run: Klik på knappen Build & Run for at kompilere og køre din applikation på den tilsluttede Android-enhed.
- Åbn Profiler-vinduet: Når applikationen starter på enheden, skal du åbne Profiler-vinduet i Unity Editor ved at gå til menuen Window > Analysis > Profiler.
Efter at have åbnet Profiler-vinduet, vil det begynde at blive populært med data fra din applikation. Hvis Editor ikke opretter forbindelse automatisk, kan du manuelt vælge den relevante enhed fra dropdown-menuen Target Selection i Profiler-vinduet for at starte forbindelsen.
Manuel Forbindelse af Profiler
I nogle tilfælde, især hvis der opstår netværks- eller forbindelsesproblemer, kan det være en fordel at tilslutte mål-enheden direkte til din computer via USB. Dette kan ofte forenkle opsætningen og minimere potentielle fejl.
Profilering med Android Debug Bridge (ADB)
Android Debug Bridge (ADB) er et alsidigt kommandolinjeværktøj, der giver dig mulighed for at kommunikere med en Android-enhed. Unity understøtter profilering gennem ADB, hvilket giver en alternativ metode til at indsamle performance-data, især når direkte netværksforbindelser er problematiske.
Trin til Profilering med ADB:
- Aktiver Udviklertilstand og USB-fejlfinding: På din Android-enhed skal du gå til Indstillinger, finde Udviklerindstillinger (ofte gemt under "Om telefonen" eller "System") og aktivere Udviklertilstand. Inde i Udviklerindstillinger skal du derefter aktivere USB-fejlfinding.
- Tilslut enheden via USB: Sørg for, at din enhed er tilsluttet din computer via et USB-kabel, og at den genkendes af din computer. Du kan bekræfte dette ved at åbne et kommandoprompt eller terminalvindue og skrive
adb devices. Din enhed bør vises på listen. - Åbn Build Settings i Unity: Gå til File > Build Settings.
- Aktivér Development Build: Sørg for, at Development Build er markeret.
- Vælg Build & Run: Klik på Build & Run.
- Åbn Profiler-vinduet i Unity: Når applikationen starter på enheden, skal du gå til Window > Analysis > Profiler.
- Vælg ADB-forbindelse: Fra dropdown-menuen Target Selection skal du vælge AndroidProfiler ([email protected]:34999). Bemærk, at denne indstilling kun er synlig, når Android-målet er valgt.
Manuel Konfiguration af ADB Tunnel
Unity Editor opretter automatisk en ADB-tunnel til din applikation, når du vælger "Build & Run". Du kan dog også konfigurere denne tunnel manuelt, hvis du ønsker at profilere en anden applikation eller genstarte ADB-serveren.
Sådan konfigureres tunnelen manuelt:
- Åbn Terminal eller Kommandoprompt: Start et terminalvindue (macOS/Linux) eller Kommandoprompt (Windows).
- Indtast ADB-kommandoer:
- For Editor-til-Android-forbindelse via USB-kabel:
adb forward tcp:34999 localabstract:Unity-{indsæt bundle identifier her}
Erstat{indsæt bundle identifier her}med din applikations faktiske bundle identifier (f.eks.com.yourcompany.yourgame). - For Android-til-Editor-forbindelse via USB-kabel:
adb reverse tcp:34998 tcp:34999
- For Editor-til-Android-forbindelse via USB-kabel:
Disse kommandoer opretter en direkte kommunikationskanal mellem Unity Editor og din applikation på enheden, hvilket er essentielt for, at Profileren kan indsamle data.
Analyse af Performance-data
Når Profileren er forbundet, vil du se en række forskellige moduler, der viser data om din applikations ydeevne:
- CPU Usage: Viser, hvordan CPU-tiden er fordelt mellem forskellige systemer som f.eks. Physics, Rendering, Scripts og Memory.
- GPU Usage: Rapporterer om GPU'ens belastning, herunder draw calls, triangler og vertices.
- Memory: Overvåger hukommelsesallokeringer, giver indsigt i potentielle hukommelseslækager og viser, hvordan hukommelsen bruges af forskellige objekter.
- Rendering: Detaljer om rendering-processen, herunder batch count, set pass calls og frame rendering tid.
- Physics: Information om fysiksimuleringens ydeevne.
- Audio: Overvågning af lydsystemets brug.
Ved at undersøge disse moduler kan du identificere præcist, hvor din applikation bruger mest tid og ressourcer. For eksempel, hvis CPU Usage-modulet viser, at din script-tid er meget høj, kan det indikere, at du skal optimere dine C#-scripts. Hvis GPU Usage viser et højt antal draw calls, kan du overveje at implementere teknikker som "static batching" eller "GPU instancing" for at reducere dem.
Tabel: Sammenligning af Forbindelsesmetoder
| Metode | Fordele | Ulemper | Bedst til |
|---|---|---|---|
| Fjernprofilering (WiFi) | Fleksibel, ingen kabel nødvendig efter initial opsætning. | Kræver stabil WiFi-forbindelse, kan være langsommere end USB. | Generel udvikling og test på rigtige enheder. |
| ADB via USB | Stabil forbindelse, ofte hurtigere dataoverførsel. | Kræver konstant USB-tilslutning, kan være mindre fleksibel. | Fejlfinding af specifikke problemer, dybdegående analyse. |
Ofte Stillede Spørgsmål (FAQ)
Q1: Hvorfor kan jeg ikke se min enhed i Profilerens Target Selection dropdown?
A1: Sørg for, at din enhed er på samme WiFi-netværk som din computer, at "Development Build" og "Autoconnect Profiler" er aktiveret, og at din firewall tillader Unity's kommunikation.
Q2: Er det nødvendigt at aktivere "Development Build" for at profilere?
A2: Ja, "Development Build" aktiverer de nødvendige debug-symboler og muliggør forbindelsen til Unity Profiler.
Q3: Kan jeg profilere en udgivet applikation (release build)?
A3: Nej, du kan kun profilere "Development Builds", da release builds normalt ikke indeholder de nødvendige data til profilering og er optimeret til en mindre filstørrelse og hurtigere ydeevne.
Q4: Hvad er "bundle identifier" og hvor finder jeg den?
A4: Bundle identifier er en unik streng, der identificerer din applikation (f.eks. com.minvirksomhed.mitspil). Du kan finde og ændre den i Unity under File > Build Settings > Player Settings > Other Settings > Identification.
Q5: Hvilke performance-metrics er vigtigst at overvåge?
A5: Dette afhænger af din applikation, men generelt er CPU Usage (især script-tid), GPU Usage (draw calls, fill rate) og Memory Usage kritiske at holde øje med for at sikre en god brugeroplevelse.
Konklusion
At mestre brugen af Unity Profiler og ADB på Android-enheder er en essentiel færdighed for enhver mobilapp-udvikler. Ved at følge disse trin og regelmæssigt analysere performance-data kan du proaktivt identificere og løse ydeevneproblemer, hvilket resulterer i en glattere, hurtigere og mere engagerende oplevelse for dine brugere. Husk altid at teste på et bredt udvalg af enheder for at sikre optimal ydeevne på tværs af Android-økosystemet.
Hvis du vil læse andre artikler, der ligner Optimer din Unity-app: Performance-data på Android, kan du besøge kategorien Teknologi.
