How to change screen resolution in Unity?

Tilpas din Unity-spilskærmsopløsning dynamisk

23/05/2023

Rating: 4.78 (7563 votes)
Indholdsfortegnelse

Tilpas din Unity-spilskærmsopløsning dynamisk

I den stadigt udviklende verden af spiludvikling er det afgørende at tilbyde spillerne en fleksibel og tilpasselig oplevelse. En af de mest effektive måder at opnå dette på er ved at give dem mulighed for at styre spillets skærmopløsning. Dette er især vigtigt for at sikre kompatibilitet på tværs af en bred vifte af enheder og skærmstørrelser. Unity, en af de mest populære spilmotorer, giver udviklere kraftfulde værktøjer til at opnå netop dette. Denne artikel vil guide dig gennem processen med at ændre skærmopløsningen i dit Unity-spil under kørsel og hvordan du henter en liste over tilgængelige skærmopløsninger.

How to change screen resolution in Unity?
Unity provides a straightforward API for changing screen resolution during gameplay. You can use the following code snippet to change the screen resolution: // Method to change screen resolution public void ChangeResolution(int width, int height, bool fullscreen) Screen.SetResolution(width, height, fullscreen);

Ændring af skærmopløsning under kørsel

Unity tilbyder en ligetil API (Application Programming Interface) til at ændre skærmopløsningen under selve spillet. Ved at bruge den indbyggede Screen-klasse kan du dynamisk justere bredde, højde og fuldskærmstilstand. Nedenfor finder du et simpelt kodeeksempel, der demonstrerer dette:

using UnityEngine; public class ResolutionManager: MonoBehaviour { // Metode til at ændre skærmopløsningen public void ChangeResolution(int width, int height, bool fullscreen) { Screen.SetResolution(width, height, fullscreen); } } 

For at implementere denne funktionalitet skal du vedhæfte ResolutionManager-scriptet til et GameObject i din Unity-scene. Derefter kan du kalde ChangeResolution-metoden med de ønskede parametre for bredde, højde og fuldskærmstilstand. Dette giver dig mulighed for at integrere denne funktionalitet i dine spils indstillingsmenuer eller andre brugerdefinerede systemer.

Hentning af tilgængelige skærmopløsninger

Før du lader spillerne vælge deres foretrukne opløsning, er det en god praksis at præsentere dem for en liste over alle tilgængelige skærmopløsninger på deres system. Unity gør det nemt at få adgang til disse oplysninger via Screen.resolutions-egenskaben. Her er et eksempel på, hvordan du kan gøre dette:

using UnityEngine; public class ResolutionManager: MonoBehaviour { // Metode til at hente tilgængelige skærmopløsninger public Resolution[] GetAvailableResolutions() { return Screen.resolutions; } } 

Du kan derefter bruge denne metode til at udfylde et dropdown-menu eller en liste i dit spils indstillingsmenu. Dette giver spillerne en intuitiv måde at vælge den opløsning, der passer bedst til deres behov og skærmopsætning. Her er et eksempel på, hvordan du kan integrere dette med Unitys UI-system:

using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; public class ResolutionUI: MonoBehaviour { public Dropdown resolutionDropdown; public ResolutionManager resolutionManager; void Start() { // Udfyld dropdown med tilgængelige opløsninger Resolution[] resolutions = resolutionManager.GetAvailableResolutions(); resolutionDropdown.ClearOptions(); List options = new List(); foreach (Resolution res in resolutions) { options.Add(res.width + "x" + res.height); } resolutionDropdown.AddOptions(options); } // Metode til at håndtere opløsningsændring fra UI public void OnResolutionChanged(int index) { Resolution[] resolutions = resolutionManager.GetAvailableResolutions(); Resolution selectedResolution = resolutions[index]; resolutionManager.ChangeResolution(selectedResolution.width, selectedResolution.height, true); } } 

For at dette skal fungere, skal du vedhæfte ResolutionUI-scriptet til et GameObject, der indeholder et UI Dropdown-element med en Dropdown-komponent. Derefter skal du i Unity Editor tildele referencerne til dropdown-elementet og ResolutionManager-scriptet i inspektørvinduet.

Unitys standard vinduestilstande

Når du bygger dit Unity-spil til desktopplatforme, har du mulighed for at definere standard vinduestilstand. Dette bestemmer, hvordan dit spil vises ved opstart. Unity tilbyder flere muligheder for fuldskærmstilstand, som du kan konfigurere via Player Settings i Unity Editor. Disse indstillinger findes under sektionen Resolution and Presentation.

Her er en oversigt over de primære fuldskærmstilstande:

  • Fullscreen Window: Dette er ofte standardindstillingen for mange platforme. I denne tilstand sættes dit app-vindue til den indfødte skærmopløsning og dækker hele skærmen. Dette kaldes også 'borderless fullscreen'. Unity gengiver indholdet ved den opløsning, der er angivet i et script, eller den indfødte skærmopløsning, hvis ingen er angivet, og skalerer det for at fylde vinduet. Hvis billedformatet ikke matcher, kan der tilføjes sorte bjælker (letterboxing). OS-brugergrænsefladen er synlig.
  • Exclusive Fullscreen (kun Windows): Denne tilstand giver dit spil eneret til at bruge skærmen. I modsætning til 'Fullscreen Window' ændrer denne tilstand OS-skærmopløsningen for at matche spillets valgte opløsning. Dette giver typisk den bedste ydeevne, men er kun tilgængelig på Windows.
  • Maximized Window (kun Mac): På macOS sætter denne tilstand vinduet til operativsystemets definition af maksimeret, hvilket normalt er et fuldskærmsvindue med menulinjen og docken skjult.
  • Windowed: Dette er en standard, ikke-fuldskærms vinduestilstand, hvor spillet kører i et flytbart vindue. Størrelsen på vinduet afhænger af den valgte spilopløsning. Som standard er vinduet ofte resizable, men dette kan deaktiveres via indstillingen Resizable Window. Alle desktopplatforme understøtter denne tilstand.

Yderligere tilpasningsmuligheder

Ud over de grundlæggende fuldskærmstilstande tilbyder Unity en række andre indstillinger for at finjustere, hvordan dit spil præsenteres for brugeren:

  • Default Is Native Resolution: Hvis denne indstilling er aktiveret, vil spillet som standard bruge den indfødte opløsning på målsystemet. Denne indstilling er dog ikke tilgængelig, hvis fuldskærmstilstanden er sat til Windowed.
  • Default Screen Width og Default Screen Height: Disse felter giver dig mulighed for at indstille den standard skærmbredde og -højde i pixels, når spillet starter i vinduestilstand.
  • Resizable Window: Ved at aktivere denne mulighed kan brugerne ændre størrelsen på spilvinduet manuelt. Hvis du deaktiverer denne indstilling, kan din applikation ikke bruge Windowed Fullscreen Mode.
  • Allow Fullscreen Switch: Giver spillerne mulighed for at skifte mellem fuldskærm og vinduestilstand ved hjælp af standard OS-genvejstaster.
  • Supported Aspect Ratios: Her kan du angive, hvilke billedformater der skal vises i opløsningsdialogen ved spillets start, forudsat at de understøttes af brugerens skærm.

Tabel: Sammenligning af Fuldskærmstilstande

TilstandBeskrivelseOS ÆndringOS UI SynligPerformance
Fullscreen WindowDækker hele skærmen med spillet, kan skaleres.NejJaGod
Exclusive FullscreenFuld kontrol over skærmen, ændrer OS-opløsning.JaNejBedst
WindowedKører i et standard, flytbart vindue.NejJaGod

Ofte Stillede Spørgsmål (FAQ)

Q: Hvordan kan jeg sætte en specifik opløsning ved spillets start?
A: Du kan bruge Screen.SetResolution(width, height, fullscreen); i dit start-script eller en lignende initialiseringsmetode.

What is the default window mode in Unity?
This defines the default window mode at startup. Set your app window to the full-screen native display resolution, covering the whole screen. This mode is also known as borderless full-screen. Unity renders the app content at the resolution set by a script, or the native display resolution if none is set and scales it to fill the window.

Q: Kan jeg lade spilleren vælge mellem fuldskærm og vinduestilstand?
A: Ja, ved at bruge Screen.fullScreenMode-egenskaben og en UI-kontrol som en dropdown eller knapper, kan du give spilleren denne mulighed.

Q: Hvad er den bedste måde at håndtere forskellige skærmstørrelser på?
A: Ved at hente og vise tilgængelige opløsninger giver du spillerne kontrol. Overvej også at implementere UI-skalering og responsive designprincipper i dit spil.

Q: Er 'Exclusive Fullscreen' altid bedre for ydeevnen?
A: Generelt giver 'Exclusive Fullscreen' den mest direkte adgang til hardwaren og kan derfor give den bedste ydeevne, især på Windows. Dog kan 'Fullscreen Window' også være meget effektiv, især med moderne grafiske API'er.

Konklusion

Ved at implementere dynamisk skærmopløsningsstyring i dit Unity-spil, giver du dine spillere en markant forbedret brugeroplevelse. Muligheden for at tilpasse spillets visning til deres specifikke hardware sikrer ikke kun bedre kompatibilitet, men viser også, at du værdsætter deres individuelle præferencer. Med de værktøjer og eksempler, der er præsenteret her, er du godt rustet til at integrere denne vigtige funktionalitet og tage dine Unity-projekter til det næste niveau.

Hvis du vil læse andre artikler, der ligner Tilpas din Unity-spilskærmsopløsning dynamisk, kan du besøge kategorien Teknologi.

Go up