Kojote Geschrieben 27. Juni 2022 Melden Share Geschrieben 27. Juni 2022 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.