Jump to content
Unity Insider Forum

Screen.SetResolution


Kojote

Recommended Posts

Hi!

Ich hätte mal eine Frage zu Screen.SetResolution.

Ich habe ein Settings Script in dem alle Quality Einstellungen zum ersten Spielstart hinterlegt sind.

Für die Monitorauflösung nutze ich folgendes:

if(settings.videoSettings.screenResolution == 0) {
	// No resolution is specified, the standard monitor resolution is used.
    Screen.SetResolution(Screen.width, Screen.height, settings.videoSettings.fullscreen);
    //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height);
} else {
	// Load saved resolution
    Resolution[] resolutionsAll = Screen.resolutions;

    Screen.SetResolution(resolutionsAll[settings.videoSettings.screenResolution].width, resolutionsAll[settings.videoSettings.screenResolution].height, settings.videoSettings.fullscreen);
    //Debug.LogError("Load saved resolution. Use: " + resolutionsAll[settings.videoSettings.screenResolution].width + " " + resolutionsAll[settings.videoSettings.screenResolution].height);
}

settings.videoSettings.screenResolution gehört zu deinem DropDown Feld mit den möglichen Monitorauflösungen. Der ausgewählte Wert ist screenResolution.

Alle Einstellungen speichere ich in einer Datei.

Wenn ich also das Spiel das erste mal starte ist screenResolution immer 0, was auch funktioniert. Er holt sich Screen.with und Screen.height. Auf meinem Monitor wäre das dann 1920 x 1080.

Mit der Zeile ändere ich die Monitorauflösung:

Screen.SetResolution(resolutions[resolutionSelect.value].width, resolutions[resolutionSelect.value].height, fullscreenToggle.isOn);

Jedes mal wenn ich den Settings etwas ändere wird die Datei überschrieben, funktioniert ebenfalls.

Wenn ich nun die Datei lösche sollten eigentlich alle Werte gelöscht sein und das Script die Default Werte nutzen. Funktioniert aber nicht!

Er löst zwar in den Settings diese Bedingung aus:

if(settings.videoSettings.screenResolution == 0) {
	// No resolution is specified, the standard monitor resolution is used.
    Screen.SetResolution(Screen.width, Screen.height, settings.videoSettings.fullscreen);
    //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height);
}

Problem daran ist, dass die Klasse Screen den letzten Wert speichert. Habe ich also zuletzt mit Screen.SetResolution 800 x 600 angegeben, lösche die Datei und starte das Spiel wieder zum ersten mal, wird nun nicht meine wirkliche Monitorauflösung von 1920 x 1080 genutzt sondern weiterhin 800 x 600. Irgendwie speichert sich Screen.Setresolution den letzten Wert.

Ändere ich den Code so ab:

if(settings.videoSettings.screenResolution == 0) {
	// No resolution is specified, the standard monitor resolution is used.
    Screen.SetResolution(1920, 1080, settings.videoSettings.fullscreen);
    //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height);
}

Habe ich das Problem nicht, da ich ja mit den festen Werten von 1920 x 1080 arbeite. 

Ich müsste also irgendwie verhindern, dass Screen sich Werte speichert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...