Sådan ændres skærmopløsning i Unity Game

Ændring af skærmopløsningen i et Unity spil, efter at det er blevet bygget, er en nyttig funktion til at forbedre brugeroplevelsen og kompatibiliteten på tværs af forskellige enheder. Unity giver metoder til dynamisk at justere skærmopløsningen under kørsel. I denne selvstudie guider vi dig gennem processen med at ændre skærmopløsning i dit Unity spil og opnå tilgængelige skærmopløsninger.

Ændring af skærmopløsning under Runtime

Unity giver en ligetil API til at ændre skærmopløsning under gameplay. Du kan bruge følgende kodestykke til at ændre skærmopløsningen:

using UnityEngine;

public class ResolutionManager : MonoBehaviour
{
    // Method to change screen resolution
    public void ChangeResolution(int width, int height, bool fullscreen)
    {
        Screen.SetResolution(width, height, fullscreen);
    }
}

For at kalde denne metode og ændre opløsningen kan du vedhæfte 'ResolutionManager'-scriptet til et GameObject i din scene og påkalde 'ChangeResolution'-metoden med den ønskede bredde, højde og fuldskærmstilstandsparametre.

Få tilgængelige skærmopløsninger

Før du giver spillere lov til at ændre skærmopløsningen, er det en fordel at give dem en liste over tilgængelige opløsninger. Du kan hente de tilgængelige skærmopløsninger ved hjælp af følgende kode:

using UnityEngine;

public class ResolutionManager : MonoBehaviour
{
    // Method to get available screen resolutions
    public Resolution[] GetAvailableResolutions()
    {
        return Screen.resolutions;
    }
}

Du kan derefter bruge denne metode til at udfylde en rullemenu eller liste UI-element i dit spils indstillingsmenu, så spillerne kan vælge deres foretrukne opløsning.

'ResolutionUI.cs'

using UnityEngine;
using UnityEngine.UI;

public class ResolutionUI : MonoBehaviour
{
    public Dropdown resolutionDropdown;
    public ResolutionManager resolutionManager;

    void Start()
    {
        // Populate dropdown with available resolutions
        Resolution[] resolutions = resolutionManager.GetAvailableResolutions();
        resolutionDropdown.ClearOptions();
        
        List<string> options = new List<string>();
        foreach (Resolution res in resolutions)
        {
            options.Add(res.width + "x" + res.height);
        }
        resolutionDropdown.AddOptions(options);
    }

    // Method to handle resolution change from UI
    public void OnResolutionChanged(int index)
    {
        Resolution[] resolutions = resolutionManager.GetAvailableResolutions();
        Resolution selectedResolution = resolutions[index];
        resolutionManager.ChangeResolution(selectedResolution.width, selectedResolution.height, true);
    }
}
  • Vedhæft 'ResolutionUI'-scriptet til et GameObject, der indeholder et UI-dropdown-element ('Dropdown'-komponent). Tildel derefter rullemenuen og 'ResolutionManager' scriptreferencer i Unity Editor.

Konklusion

Ved at følge disse trin og inkorporere de medfølgende kodeeksempler, kan du problemfrit implementere dynamiske skærmopløsningsændringer i dit Unity-spil, hvilket giver spillerne fleksibilitet og forbedrer deres overordnede spiloplevelse.