Hur man ändrar skärmupplösning i Unity Game

Att ändra skärmupplösningen i ett Unity-spel efter att det har byggts är en användbar funktion för att förbättra användarupplevelsen och kompatibiliteten mellan olika enheter. Unity tillhandahåller metoder för att dynamiskt justera skärmupplösningen under körning. I den här handledningen guidar vi dig genom processen att ändra skärmupplösningen i ditt Unity-spel och få tillgängliga skärmupplösningar.

Ändra skärmupplösning under körning

Unity ger ett enkelt API för att ändra skärmupplösning under spelandet. Du kan använda följande kodavsnitt för att ändra skärmupplö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);
    }
}

För att anropa den här metoden och ändra upplösningen kan du bifoga 'ResolutionManager'-skriptet till ett GameObject i din scen och anropa 'ChangeResolution'-metoden med önskad bredd, höjd och helskärmslägesparametrar.

Få tillgängliga skärmupplösningar

Innan du tillåter spelare att ändra skärmupplösningen är det fördelaktigt att förse dem med en lista över tillgängliga upplösningar. Du kan hämta de tillgängliga skärmupplösningarna med följande kod:

using UnityEngine;

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

Du kan sedan använda den här metoden för att fylla i en rullgardinsmeny eller lista UI-element i spelets inställningsmeny, så att spelare kan välja sin föredragna upplö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);
    }
}
  • Bifoga 'ResolutionUI'-skriptet till ett GameObject som innehåller ett UI-rullgardinselement ('Dropdown'-komponent). Tilldela sedan rullgardinsmenyn och 'ResolutionManager' skriptreferenser i Unity Editor.

Slutsats

Genom att följa dessa steg och införliva de medföljande kodexemplen kan du sömlöst implementera dynamiska skärmupplösningsändringar i ditt Unity-spel, vilket ger spelare flexibilitet och förbättrar deras övergripande spelupplevelse.