Jak zmienić rozdzielczość ekranu w grze Unity

Zmiana rozdzielczości ekranu w grze Unity po jej utworzeniu jest użyteczną funkcją poprawiającą wygodę użytkownika i kompatybilność na różnych urządzeniach. Unity zapewnia metody dynamicznego dostosowywania rozdzielczości ekranu w czasie działania. W tym samouczku przeprowadzimy Cię przez proces zmiany rozdzielczości ekranu w grze Unity i uzyskiwania dostępnych rozdzielczości ekranu.

Zmiana rozdzielczości ekranu w czasie działania

Unity zapewnia proste API do zmiany rozdzielczości ekranu podczas rozgrywki. Aby zmienić rozdzielczość ekranu, możesz użyć następującego fragmentu kodu:

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);
    }
}

Aby wywołać tę metodę i zmienić rozdzielczość, możesz dołączyć skrypt 'ResolutionManager' do obiektu GameObject w swojej scenie i wywołać metodę 'ChangeResolution' z żądanymi parametrami szerokości, wysokości i trybu pełnoekranowego.

Uzyskiwanie dostępnych rozdzielczości ekranu

Zanim pozwolisz graczom na zmianę rozdzielczości ekranu, warto udostępnić im listę dostępnych rozdzielczości. Dostępne rozdzielczości ekranu możesz pobrać za pomocą następującego kodu:

using UnityEngine;

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

Następnie możesz użyć tej metody, aby wypełnić menu rozwijane lub wyświetlić listę elementów interfejsu użytkownika w menu ustawień gry, umożliwiając graczom wybór preferowanej rozdzielczości.

'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);
    }
}
  • Dołącz skrypt 'ResolutionUI' do obiektu GameObject zawierającego element rozwijany interfejsu użytkownika (komponent „Dropdown”). Następnie przypisz listę rozwijaną i odniesienia do skryptu 'ResolutionManager' w edytorze Unity.

Wniosek

Wykonując te kroki i wykorzystując podane przykłady kodu, możesz bezproblemowo wdrożyć dynamiczne zmiany rozdzielczości ekranu w swojej grze Unity, zapewniając graczom elastyczność i poprawiając ich ogólne wrażenia z gry.